PHP 透明水印生成代码


下面是一个使用PHP生成图片透明水印的示例代码。这段代码会读取一个源图片文件,然后在上面添加一个带有透明度的水印图片。请确保你已经有了PHP环境,并且`gd`库已经启用,因为我们将使用它来处理图像。


<?php
// 源图片路径
$sourceImagePath = 'source.jpg';
// 水印图片路径
$watermarkImagePath = 'watermark.png';
// 输出图片路径
$outputImagePath = 'output.jpg';

// 加载源图片
$sourceImage = imagecreatefromjpeg($sourceImagePath);

// 获取源图片的宽度和高度
$sourceWidth = imagesx($sourceImage);
$sourceHeight = imagesy($sourceImage);

// 加载水印图片
$watermarkImage = imagecreatefrompng($watermarkImagePath);

// 获取水印图片的宽度和高度
$watermarkWidth = imagesx($watermarkImage);
$watermarkHeight = imagesy($watermarkImage);

// 设置水印的位置(这里假设水印放在右下角,距离边缘各10像素)
$x = $sourceWidth - $watermarkWidth - 10;
$y = $sourceHeight - $watermarkHeight - 10;

// 将水印图片复制到源图片上,并设置透明度
// 注意:PHP的GD库不直接支持透明度,但PNG图片的alpha通道会被保留
// 可以通过imagecopymerge()函数来模拟透明度效果,该函数第四个参数控制透明度
imagecopymerge($sourceImage, $watermarkImage, $x, $y, 0, 0, $watermarkWidth, $watermarkHeight, 70); // 70是透明度(0为完全透明,100为完全不透明)

// 输出图片
imagejpeg($sourceImage, $outputImagePath);

// 释放内存
imagedestroy($sourceImage);
imagedestroy($watermarkImage);

echo "水印添加完成,已保存到 {$outputImagePath}";
?>

**注意**:

- 确保`source.jpg`和`watermark.png`这两个文件在你的脚本可以访问的目录下。

- 水印图片的透明度是通过`imagecopymerge()`函数的第四个参数来控制的,这个参数的值介于0(完全透明)到100(完全不透明)之间。

- 输出图片将会保存为`output.jpg`,你可以根据需要修改这个文件名和路径。

- 如果你的水印图片不是PNG格式,而是其他不支持透明度的格式(如JPEG),那么你需要先将其转换为PNG格式,或者使用其他方法来模拟透明度效果。