在PHP中进行图像水印,可以使用GD库或Imagick扩展。以下是使用这两种方法的示例代码:
方法一:使用GD库
<?php
function addWatermark($imagePath, $watermarkText, $outputPath) {
// 加载原始图像和水印图像
$originalImage = imagecreatefromjpeg($imagePath);
$watermarkImage = imagecreatefrompng('watermark.png');
// 获取原始图像和水印图像的尺寸
$originalImageWidth = imagesx($originalImage);
$originalImageHeight = imagesy($originalImage);
$watermarkImageWidth = imagesx($watermarkImage);
$watermarkImageHeight = imagesy($watermarkImage);
// 计算水印的位置(这里将水印放在右下角)
$destX = $originalImageWidth - $watermarkImageWidth;
$destY = $originalImageHeight - $watermarkImageHeight;
// 将水印图像粘贴到原始图像上
imagecopy($originalImage, $watermarkImage, $destX, $destY, 0, 0, $watermarkImageWidth, $watermarkImageHeight);
// 保存带有水印的图像
imagejpeg($originalImage, $outputPath);
// 销毁图像资源
imagedestroy($originalImage);
imagedestroy($watermarkImage);
}
$imagePath = 'input.jpg';
$watermarkText = 'Watermark';
$outputPath = 'output.jpg';
addWatermark($imagePath, $watermarkText, $outputPath);
?>
方法二:使用Imagick扩展
<?php
function addWatermark($imagePath, $watermarkText, $outputPath) {
// 加载原始图像和水印图像
$originalImage = new Imagick($imagePath);
$watermarkImage = new Imagick('watermark.png');
// 设置水印的透明度
$watermarkImage->setImageOpacity(0.5);
// 获取原始图像和水印图像的尺寸
$originalImageWidth = $originalImage->getWidth();
$originalImageHeight = $originalImage->getHeight();
$watermarkImageWidth = $watermarkImage->getWidth();
$watermarkImageHeight = $watermarkImage->getHeight();
// 计算水印的位置(这里将水印放在右下角)
$destX = $originalImageWidth - $watermarkImageWidth;
$destY = $originalImageHeight - $watermarkImageHeight;
// 将水印图像粘贴到原始图像上
$originalImage->compositeImage($watermarkImage, Imagick::COMPOSITE_OVER, $destX, $destY);
// 保存带有水印的图像
$originalImage->writeImage($outputPath);
// 销毁图像资源
$originalImage->clear();
$originalImage->destroy();
$watermarkImage->clear();
$watermarkImage->destroy();
}
$imagePath = 'input.jpg';
$watermarkText = 'Watermark';
$outputPath = 'output.jpg';
addWatermark($imagePath, $watermarkText, $outputPath);
?>
这两种方法都可以实现在PHP中对图像添加水印的功能。你可以根据自己的需求和场景选择合适的方法。