2012-04-12 158 views
1

我已经得到了这个形象: original image with white background透明度问题与PNG图像

我使用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'); 

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

+0

尝试用透明度替换白色背景颜色。也许通过一些填充方法让它连续。 – hakre 2012-05-27 14:26:51

回答

1

您的原始图像没有透明背景,但您尝试通过将所有纯白色像素更改为透明来创建一个。由于文字周围有阴影/光晕,这些像素不是很白,并且不会变得透明。这里有几个选项:

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

那么,没有办法像使用php一样使用gimp呢? – mindcast 2012-04-12 15:39:36

+1

这个问题不是PHP--问题在于你的原始图像背景是固定的,所以它是不可能的 - Photoshop或GIMP将允许你尝试剪切图像,但它不会像你一样好有原始的分层图像 – Simon 2012-04-12 16:30:59