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.