【发布时间】:2018-02-14 03:40:03
【问题描述】:
我目前正在编写一个脚本来为图像添加水印。所述水印的不透明度不同。 例如,基础水印图像是具有完全可见文本和透明背景的 PNG。添加后,我想淡化这个基础 PNG 以适应我的需要并制作不透明的水印。
为此,我使用imagefilter() 淡化PNG:
$opacity = 0.25;
$watermarkRes = imagecreatefrompng($filename);
imagealphablending($watermarkRes, false);
imagesavealpha($watermarkRes, true);
$transparency = 1 - $opacity;
imagefilter(
$watermarkRes,
IMG_FILTER_COLORIZE,
0,
0,
0,
127*$transparency
);
imagepng($watermarkRes, $filename);
所有非透明区域都会很好地褪色,但现有的透明区域会变黑。
这是上面代码的结果:
https://preview.ibb.co/j8zePF/TEST.png
用作水印它看起来像这样:
https://preview.ibb.co/mLvKPF/15027295625991d55a1ef081_42502547.jpg
虽然想要的结果应该是这样的:
https://preview.ibb.co/f81R4F/TEST_15027295625991d55a1ef081_42502547.jpg
如何在保持透明区域不变的同时为文本添加不透明度?
【问题讨论】:
标签: php image png transparency imagefilter