在PHP中进行图像水印,可以使用GD库或Imagick扩展。以下是使用这两种方法的示例代码:
方法一:使用GD库
$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扩展
$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中对图像添加水印的功能。你可以根据自己的需求和场景选择合适的方法。