2012-12-21 88 views
1

我想用php代码做一个水印标记,并且一切似乎都很好,直到我将一个透明的PNG文件放到GIF中。这会发生什么:PHP - 动态添加透明PNG到GIF

enter image description here

所以不是透明的黑色水印,我得到了这顶半固体绿色的东西。 水印是 enter image description here

我用下面的PHP代码:

... 
    $image = imagecreatefromgif($filepath);; 
    $watermark_image = imagecreatefrompng($wm_filepath); 
    imagealphablending($watermark_image, false); 
    imagesavealpha($watermark_image, true); 
    imagegif($image, $filepath); 
    imagedestroy($image); 


    imagecopy($image, $watermark_image, $offset['x'], $offset['y'], 0, 0, imagesx($watermark_image), imagesy($watermark_image)); 

附:我不得不提到我尝试使用

imagealphablending() 
    imagesavealpha() 

不同的设置组合,并没有得到结果

UPD

现在我保存图像为PNG文件。我删除了这两行imagealphablending($watermark_image, false); imagesavealpha($watermark_image, true);,它工作。但是,PNG的透明度与GIF重叠。 imagealphablending($image, true);没有帮助。我该怎么办?

回答

0

GIF文件限制为256种颜色,并将单个颜色指定为透明。所以你不能拥有抗锯齿透明度,也不能有任何形式的抗锯齿。

我建议保存为PNG。

+0

谢谢你的回答。我试图通过使用'imagepng($ image,$ filepath);'来保存为PNG;但是我有相同的结果,但水印的背景根本不是“透明的”... – NullPointerException

+0

更新了问题,请参阅 – NullPointerException