Convert a set of colors of an image to transparent
Posted: Mon May 17, 2010 10:27 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 code works very well but, as you can image, the performance is not very good. I would like to share this code and ask to this comunity 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.