png图像的透明度问题

时间:2012-04-12 15:18:45

标签: php gd alpha-transparency

我有这个图片: original image with white background

我使用php5和gd2库来实现透明背景,但结果并不是我所期望的(你需要一个黑暗的背景才能看到差异):transparent background

这是我的代码:

$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');

任何帮助将不胜感激! :)

1 个答案:

答案 0 :(得分:1)

原始图像没有透明背景,但您尝试通过将所有纯白像素更改为透明来创建一个。由于文本周围有阴影/发光,这些像素不是很白,也不会变得透明。你有几个选择:

  • 使用图像编辑器(GIMP,Photoshop等)及其细粒度选择工具执行智能选择“背景”,然后将其删除。至少,Photoshop在其魔棒工具上提供了非常有用的选项,可以选择阈值,羽化等。
  • 选择更多颜色以使其“透明”。而不仅仅是白色,选择所有灰色阴影,减去设置“.gr”的确切颜色。这应该使图像的所有阴影部分都透明,尽管边缘可能不够完美(即:没有羽毛,略带锯齿。)