Search code examples
phpgdalpha-transparency

Transparency issue with png images


I 've got this image: original image with white background

i use php5 and gd2 library to achieve a transparent background, but the result is not what i have expected(you need a dark background to see the difference):transparent background

and here is my code:

$size = getimagesize($img_url);
$img = imagecreatefrompng($img_url);
$im_tc = imagecreatetruecolor($size[0],$size[1]);
imagecopyresampled($im_tc,$img,0,0,0,0,$size[0],$size[1],$size[0],$size[1]);
imagedestroy($img);
$white  = imagecolorallocatealpha($im_tc, 255, 255, 255,127);
imagecolortransparent($im_tc, $white);
imagepng($im_tc,'image.png');

Any help would be appreciated! :)


Solution

  • Your original image doesn't have a transparent background, but you're trying to create one by changing all pure-white pixels to transparent. As the text has a shadow/glow around it, those pixels aren't quite white, and won't become transparent. You have a couple options here:

    • Use an image editor (GIMP, Photoshop, etc.) and their fine-grained selection tools to perform a smart selection of the "background", then remove that. Photoshop, at least, has extremely useful options available on its magic wand tool to choose threshold, feathering, and more.
    • Pick more colours to make "transparent." Instead of just white, choose all of the shades of gray, minus the exact colour that ".gr" is set in. This should make all of the shadowed parts of the image transparent as well, although the edges may be less than perfect (i.e.: not feathered, slightly jagged.)