【问题标题】:PHP - Add transparent PNG to GIF dynamicallyPHP - 动态添加透明PNG到GIF
【发布时间】:2023-03-31 15:09:01
【问题描述】:

我正在尝试用 php 代码做一个水印标记,一切似乎都很好,直到我将一个透明的 PNG 文件放入 GIF。这会发生什么:

所以不是透明的黑色水印,我在顶部得到了这个半纯绿色的东西。 水印是

我使用以下 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); 没有帮助。我该怎么办?

【问题讨论】:

    标签: php watermark php-gd


    【解决方案1】:

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

    我建议另存为 PNG。

    【讨论】:

    • 感谢您的回答。我正在尝试使用imagepng($image, $filepath); 保存为PNG,但我得到了相同的结果,只是水印的背景现在根本不是“透明”的......
    猜你喜欢
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2013-11-02
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    相关资源
    最近更新 更多