在PHP中添加水印图片通常涉及到图像处理库,如GD库或Imagick。这些库提供了丰富的图像处理功能,包括创建图像、编辑图像、绘制图形和文本等。
以下是一个使用GD库在图片上添加文字水印的示例代码:
<?php
class Watermark {
public function addTextWatermark($sourceImage, $text, $outputImage, $position = 'bottom-right', $opacity = 50) {
// 获取图片资源
$image = imagecreatefromjpeg($sourceImage);
$width = imagesx($image);
$height = imagesy($image);
// 创建一个新的透明图层
$watermark = imagecreatetruecolor($width, $height);
$transparent = imagecolorallocatealpha($watermark, 0, 0, 0, 127);
imagefill($watermark, 0, 0, $transparent);
imagesavealpha($watermark, true);
// 设置字体颜色和大小
$textColor = imagecolorallocate($watermark, 255, 255, 255);
$fontSize = 20;
$fontFile = 'arial.ttf'; // 确保字体文件存在
// 计算文字位置
$textWidth = imagettfbbox($fontSize, 0, $fontFile, $text);
$textWidth = $textWidth[2] - $textWidth[6];
$textHeight = $textWidth / 2;
switch ($position) {
case 'top-left':
$x = 10;
$y = 10;
break;
case 'top-right':
$x = $width - $textWidth - 10;
$y = 10;
break;
case 'bottom-left':
$x = 10;
$y = $height - $textHeight - 10;
break;
case 'bottom-right':
default:
$x = $width - $textWidth - 10;
$y = $height - $textHeight - 10;
break;
}
// 添加文字水印
imagettftext($watermark, $fontSize, 0, $x, $y, $textColor, $fontFile, $text);
// 合并水印图层和原图
imagecopymerge($image, $watermark, 0, 0, 0, 0, $width, $height, $opacity);
// 输出图片
imagejpeg($image, $outputImage);
imagedestroy($image);
imagedestroy($watermark);
}
}
// 使用示例
$watermark = new Watermark();
$watermark->addTextWatermark('source.jpg', 'Copyright © 2023', 'output.jpg');
?>
通过以上示例代码和解释,你应该能够理解如何在PHP中添加水印图片,并解决常见的相关问题。
领取专属 10元无门槛券
手把手带您无忧上云