php实现图片水印
使用 GD 库添加图片水印
在 PHP 中,可以使用 GD 库为图片添加水印。GD 库是一个开源的图像处理库,支持多种图像格式。
确保服务器已安装 GD 库,可以通过 phpinfo() 查看是否启用。以下是一个简单的实现示例:

// 源图片路径
$sourceImage = 'source.jpg';
// 水印图片路径
$watermarkImage = 'watermark.png';
// 输出图片路径
$outputImage = 'output.jpg';
// 获取源图片和水印图片的尺寸
list($sourceWidth, $sourceHeight) = getimagesize($sourceImage);
list($watermarkWidth, $watermarkHeight) = getimagesize($watermarkImage);
// 创建源图片和水印图片的资源
$source = imagecreatefromjpeg($sourceImage);
$watermark = imagecreatefrompng($watermarkImage);
// 设置水印位置(右下角)
$destX = $sourceWidth - $watermarkWidth - 10;
$destY = $sourceHeight - $watermarkHeight - 10;
// 合并水印
imagecopy($source, $watermark, $destX, $destY, 0, 0, $watermarkWidth, $watermarkHeight);
// 保存输出图片
imagejpeg($source, $outputImage, 100);
// 释放内存
imagedestroy($source);
imagedestroy($watermark);
添加文字水印
除了图片水印,还可以直接添加文字水印:

// 源图片路径
$sourceImage = 'source.jpg';
// 输出图片路径
$outputImage = 'output_text.jpg';
// 创建图片资源
$image = imagecreatefromjpeg($sourceImage);
// 设置文字颜色(红色)
$textColor = imagecolorallocate($image, 255, 0, 0);
// 设置字体路径(使用服务器上的字体文件)
$font = 'arial.ttf';
// 水印文字
$text = 'Copyright';
// 添加文字水印(右下角)
imagettftext($image, 20, 0, imagesx($image) - 200, imagesy($image) - 20, $textColor, $font, $text);
// 保存输出图片
imagejpeg($image, $outputImage, 100);
// 释放内存
imagedestroy($image);
调整水印透明度
如果需要调整水印图片的透明度,可以使用 imagecopymerge 函数:
// 合并水印并设置透明度(50%)
imagecopymerge($source, $watermark, $destX, $destY, 0, 0, $watermarkWidth, $watermarkHeight, 50);
支持多种图片格式
GD 库支持多种图片格式,可以根据源图片的格式使用对应的函数:
- JPEG:
imagecreatefromjpeg(),imagejpeg() - PNG:
imagecreatefrompng(),imagepng() - GIF:
imagecreatefromgif(),imagegif()
注意事项
- 确保服务器有足够的权限读写图片文件。
- 处理大图片时可能消耗较多内存,需调整 PHP 的内存限制。
- 水印位置和大小应根据实际需求调整。
- 文字水印的字体文件需放置在服务器可访问的路径。
以上方法提供了基础的图片水印实现,可根据具体需求调整参数和功能。





