PHP - 动态地将透明PNG添加到GIF

时间:2012-12-21 02:38:08

标签: php watermark php-gd

我正在尝试用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) );

P.S。我必须提到我尝试使用

组合不同的设置
    imagealphablending()
    imagesavealpha() 

并且没有结果

UPD

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

1 个答案:

答案 0 :(得分:0)

GIF文件限制为256种颜色,并且单一颜色指定为透明。所以你不能有抗锯齿的透明度,也不能有任何类型的抗锯齿。

我建议改为以PNG格式保存。