From 43de9af71f7f4ca5731b94a06d688ae8412ba427 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Fri, 6 Jul 2018 11:14:41 +0200 Subject: 2018/Feb/28 -i állapot hozzáadva, mint a módosítások kiindulási állapota --- mayor-orig/www/include/share/gd/imagefilter.php | 252 ++++++++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 mayor-orig/www/include/share/gd/imagefilter.php (limited to 'mayor-orig/www/include/share/gd') diff --git a/mayor-orig/www/include/share/gd/imagefilter.php b/mayor-orig/www/include/share/gd/imagefilter.php new file mode 100644 index 00000000..908b4407 --- /dev/null +++ b/mayor-orig/www/include/share/gd/imagefilter.php @@ -0,0 +1,252 @@ +> 16) & 0xFF); + $g = 255 - (($rgb >> 8) & 0xFF); + $b = 255 - ($rgb & 0xFF); + $a = $rgb >> 24; + $new_pxl = imagecolorallocatealpha($source, $r, $g, $b, $a); + if ($new_pxl == false){ + $new_pxl = imagecolorclosestalpha($source, $r, $g, $b, $a); + } + imagesetpixel($source,$x,$y,$new_pxl); + ++$x; + } + ++$y; + } + return true; + break; + case 1: + $y = 0; + while($y<$max_y) { + $x = 0; + while($x<$max_x){ + $rgb = imagecolorat($source,$x,$y); + $a = $rgb >> 24; + $r = ((($rgb >> 16) & 0xFF)*0.299)+((($rgb >> 8) & 0xFF)*0.587)+(($rgb & 0xFF)*0.114); + $new_pxl = imagecolorallocatealpha($source, $r, $r, $r, $a); + if ($new_pxl == false){ + $new_pxl = imagecolorclosestalpha($source, $r, $r, $r, $a); + } + imagesetpixel($source,$x,$y,$new_pxl); + ++$x; + } + ++$y; + } + return true; + break; + case 2: + $y = 0; + while($y<$max_y) { + $x = 0; + while($x<$max_x){ + $rgb = imagecolorat($source,$x,$y); + $r = (($rgb >> 16) & 0xFF) + $arg1; + $g = (($rgb >> 8) & 0xFF) + $arg1; + $b = ($rgb & 0xFF) + $arg1; + $a = $rgb >> 24; + $r = ($r > 255)? 255 : (($r < 0)? 0:$r); + $g = ($g > 255)? 255 : (($g < 0)? 0:$g); + $b = ($b > 255)? 255 : (($b < 0)? 0:$b); + $new_pxl = imagecolorallocatealpha($source, $r, $g, $b, $a); + if ($new_pxl == false){ + $new_pxl = imagecolorclosestalpha($source, $r, $g, $b, $a); + } + imagesetpixel($source,$x,$y,$new_pxl); + ++$x; + } + ++$y; + } + return true; + break; + case 3: + $contrast = pow((100-$arg1)/100,2); + $y = 0; + while($y<$max_y) { + $x = 0; + while($x<$max_x){ + $rgb = imagecolorat($source,$x,$y); + $a = $rgb >> 24; + $r = (((((($rgb >> 16) & 0xFF)/255)-0.5)*$contrast)+0.5)*255; + $g = (((((($rgb >> 8) & 0xFF)/255)-0.5)*$contrast)+0.5)*255; + $b = ((((($rgb & 0xFF)/255)-0.5)*$contrast)+0.5)*255; + $r = ($r > 255)? 255 : (($r < 0)? 0:$r); + $g = ($g > 255)? 255 : (($g < 0)? 0:$g); + $b = ($b > 255)? 255 : (($b < 0)? 0:$b); + $new_pxl = imagecolorallocatealpha($source, $r, $g, $b, $a); + if ($new_pxl == false){ + $new_pxl = imagecolorclosestalpha($source, $r, $g, $b, $a); + } + imagesetpixel($source,$x,$y,$new_pxl); + ++$x; + } + ++$y; + } + return true; + break; + case 4: + $x = 0; + while($x<$max_x){ + $y = 0; + while($y<$max_y){ + $rgb = imagecolorat($source, $x, $y); + $r = (($rgb >> 16) & 0xFF) + $arg1; + $g = (($rgb >> 8) & 0xFF) + $arg2; + $b = ($rgb & 0xFF) + $arg3; + $a = $rgb >> 24; + $r = ($r > 255)? 255 : (($r < 0)? 0:$r); + $g = ($g > 255)? 255 : (($g < 0)? 0:$g); + $b = ($b > 255)? 255 : (($b < 0)? 0:$b); + $new_pxl = imagecolorallocatealpha($source, $r, $g, $b, $a); + if ($new_pxl == false){ + $new_pxl = imagecolorclosestalpha($source, $r, $g, $b, $a); + } + imagesetpixel($source,$x,$y,$new_pxl); + ++$y; + } + ++$x; + } + return true; + break; + case 5: + return imageconvolution($source, array(array(-1,0,-1), array(0,4,0), array(-1,0,-1)), 1, 127); + break; + case 6: + return imageconvolution($source, array(array(1.5, 0, 0), array(0, 0, 0), array(0, 0, -1.5)), 1, 127); + break; + case 7: + return imageconvolution($source, array(array(1, 2, 1), array(2, 4, 2), array(1, 2, 1)), 16, 0); + break; + case 8: + for($y = 0; $y<$max_y; $y++) { + for ($x = 0; $x<$max_x; $x++) { + $flt_r_sum = $flt_g_sum = $flt_b_sum = 0; + $cpxl = imagecolorat($source, $x, $y); + for ($j=0; $j<3; $j++) { + for ($i=0; $i<3; $i++) { + if (($j == 1) && ($i == 1)) { + $flt_r[1][1] = $flt_g[1][1] = $flt_b[1][1] = 0.5; + } else { + $pxl = imagecolorat($source, $x-(3>>1)+$i, $y-(3>>1)+$j); + + $new_a = $pxl >> 24; + //$r = (($pxl >> 16) & 0xFF); + //$g = (($pxl >> 8) & 0xFF); + //$b = ($pxl & 0xFF); + $new_r = abs((($cpxl >> 16) & 0xFF) - (($pxl >> 16) & 0xFF)); + if ($new_r != 0) { + $flt_r[$j][$i] = 1/$new_r; + } else { + $flt_r[$j][$i] = 1; + } + + $new_g = abs((($cpxl >> 8) & 0xFF) - (($pxl >> 8) & 0xFF)); + if ($new_g != 0) { + $flt_g[$j][$i] = 1/$new_g; + } else { + $flt_g[$j][$i] = 1; + } + + $new_b = abs(($cpxl & 0xFF) - ($pxl & 0xFF)); + if ($new_b != 0) { + $flt_b[$j][$i] = 1/$new_b; + } else { + $flt_b[$j][$i] = 1; + } + } + + $flt_r_sum += $flt_r[$j][$i]; + $flt_g_sum += $flt_g[$j][$i]; + $flt_b_sum += $flt_b[$j][$i]; + } + } + + for ($j=0; $j<3; $j++) { + for ($i=0; $i<3; $i++) { + if ($flt_r_sum != 0) { + $flt_r[$j][$i] /= $flt_r_sum; + } + if ($flt_g_sum != 0) { + $flt_g[$j][$i] /= $flt_g_sum; + } + if ($flt_b_sum != 0) { + $flt_b[$j][$i] /= $flt_b_sum; + } + } + } + + $new_r = $new_g = $new_b = 0; + + for ($j=0; $j<3; $j++) { + for ($i=0; $i<3; $i++) { + $pxl = imagecolorat($source, $x-(3>>1)+$i, $y-(3>>1)+$j); + $new_r += (($pxl >> 16) & 0xFF) * $flt_r[$j][$i]; + $new_g += (($pxl >> 8) & 0xFF) * $flt_g[$j][$i]; + $new_b += ($pxl & 0xFF) * $flt_b[$j][$i]; + } + } + + $new_r = ($new_r > 255)? 255 : (($new_r < 0)? 0:$new_r); + $new_g = ($new_g > 255)? 255 : (($new_g < 0)? 0:$new_g); + $new_b = ($new_b > 255)? 255 : (($new_b < 0)? 0:$new_b); + $new_pxl = ImageColorAllocateAlpha($source, (int)$new_r, (int)$new_g, (int)$new_b, $new_a); + if ($new_pxl == false) { + $new_pxl = ImageColorClosestAlpha($source, (int)$new_r, (int)$new_g, (int)$new_b, $new_a); + } + imagesetpixel($source,$x,$y,$new_pxl); + } + } + return true; + break; + case 9: + return imageconvolution($source, array(array(-1,-1,-1),array(-1,9,-1),array(-1,-1,-1)), 1, 0); + break; + case 10: + return imageconvolution($source, array(array(1,1,1),array(1,$arg1,1),array(1,1,1)), $arg1+8, 0); + break; + } +} +} +?> -- cgit v1.2.3