0

我有向图像(JPG)添加水印(PNG,透明)的脚本。可以很好地处理 - 以某种方式水印会改变颜色并使其不透明。这是我用于添加水印的代码:

$im = imagecreatefromjpeg('../../pics/'.$ran.'_large.jpg');
$stamp = imagecreatefrompng('a.png');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 70);

// Save the image to file and free memory
imagejpeg($im, '../../pics/'.$ran.'_large.jpg');
imagedestroy($im);

PHP生成后带有水印的图像(错误的方式)

4

3 回答 3

1

您的输出图像格式是 jpeg。Jpeg 不支持透明度。将输出格式更改为 png。

还建议您使用图像魔术。Gd 非常原始。

于 2012-04-19T06:27:52.247 回答
0

在从 PNG 创建带有 alpha 映射的 PNG 图像时,不要忘记这些功能:

imagealphablending($stamp,false);
imagesavealpha($stamp,true);

看看有没有区别?

于 2012-04-19T06:27:27.977 回答
0

谢谢你们的帮助 -我在这个网站上找到了答案

$im = imagecreatefromjpeg('../../pics/'.$ran.'_large.jpg');
$stamp = imagecreatefrompng('a.png');

imagealphablending($im, true);

$marge_right = 10;
$marge_bottom = 10;

$sx = imagesx($stamp);
$sy = imagesy($stamp);

$offset = 10;

imagecopy($im, $stamp, imagesx($im) - imagesx($stamp) - $offset, imagesy($im) - imagesy($stamp) - $offset, 0, 0, imagesx($stamp), imagesy($stamp));
// Save the image to file and free memory
imagejpeg($im, '../../pics/'.$ran.'_large.jpg');
imagedestroy($im);
于 2012-04-20T07:18:59.340 回答