2009-12-28 142 views
1

我正在构建一种只从其他图像创建动态图像的系统。我使用:imagecreatefromstring(file_get_contents("clown_avatar.png"));创建图像并成功输出;但是,它会弄脏透明区域上的所有颜色。如何从透明图像创建图像损坏颜色?

查看原图:

Click

而且,这里是从PHP文件中的结果:

Click

这里是源,只需几行:

<?php 

$im = imagecreatefromstring(file_get_contents("clown_avatar.png")); 
//$bg = imagecolorallocate($im,0,0,0); doesn't effect 
Header('Content-Type: image/png'); 
imagepng($im); 
imagedestroy($im); 

?> 

我试过加背景颜色imagecolorallocate;但它根本没有效果。

+1

请发表您的源代码 – Frunsi 2009-12-28 12:44:39

+0

包括的问题:) – 2009-12-28 14:27:27

回答

0

原因是你丢弃了alpha层。通过这样做,图像中不可见的部分现在变得可见。

你反而想要做的是使用alpha加载原始PNG图像,并使用imagecopymerged将其复制到所需图像(仅为背景颜色)。

+0

那么,如何做到这一点仍然使用imagecreatefromstring(),因为我必须从不同的扩展名创建图像,这是最简单的方法。 – 2009-12-28 14:58:23

+0

相反,解析MIME类型并分别处理每个类型。如果编程工作太多,请分别处理PNG和GIF。 – 2009-12-28 15:18:07

+0

谢谢你的帮助:) – 2009-12-28 16:02:13