Convert a set of colors of an image to transparent
Posted: Sun May 23, 2010 9:39 am
Hi:
I have developed a simple PHP code to convert some defined colors of an image to transparent, while keep the other colors (including transparent areas) as in the original image. The code is as follow:
The script works very well but, as you can image, the performance is not very good. I would like to ask in this forum how to improve the performance of the code.
Thanks in advance.
I have developed a simple PHP code to convert some defined colors of an image to transparent, while keep the other colors (including transparent areas) as in the original image. The code is as follow:
Code: Select all
<?php
function Verify($Red,$Green,$Blue) {
//Here I define the colors to convert to transparent
if ($Red==245 and $Green==0 and $Blue==0) return false;
if ($Red==196 and $Green==227 and $Blue==0 return false;
return true;
}
$image_source = imagecreatefrompng('test.png');
$new_image = imagecreatetruecolor(256, 256);
imagealphablending($new_image, false);
imagesavealpha($new_image, true);
$Fill = imagecolorallocatealpha($new_image,0,0,0,127);
imagefill($new_image, 0, 0, $Fill);
for ($y=0;$y<256;$y++) {
for ($x=0;$x<256;$x++) {
$rgb = imagecolorat($image_source,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >>8) & 0xFF;
$b = $rgb & 0xFF;
if (Verify($r,$g,$b)) {imagesetpixel($new_image,$x,$y,$rgb);}
}
}
header("Content-Type: image/png");
imagepng($new_image);
imagedestroy($image_source);
imagedestroy($new_image);
?>Thanks in advance.