给图片添加水印是保护图片版权和提升品牌识别度的有效方式,就让我们一起来看看如何在PHP中给图片添加水印,让你的作品更具个性化。
我们需要了解PHP处理图片的基础知识,在PHP中,我们可以使用GD库来处理图片,包括加水印、裁剪、旋转等操作,GD库是一个开源的图形处理库,支持多种格式的图片,如JPEG、PNG、GIF等。
我们将详细介绍如何在PHP中给图片添加水印,这里我们以添加文字水印为例,因为文字水印简单且易于实现,你也可以根据需要添加图片水印。
1、准备工作
在开始之前,我们需要确保PHP环境已经安装了GD库,你可以通过以下命令检查GD库是否已安装:
php -i | grep gd
如果输出中包含“gd”,则说明GD库已安装,如果没有安装,你需要根据你的操作系统安装GD库。
2、创建水印图片
我们需要创建一个水印图片,这里我们使用文字作为水印,创建一个PHP文件,例如watermark.php
,并添加以下代码:
<?php header('Content-Type: image/png'); // 设置水印文字和字体 $text = '水印文字'; $font = 'Arial.ttf'; // 设置水印颜色和大小 $color = imagecolorallocatealpha($im, 255, 255, 255, 50); $fontSize = 20; // 创建图片 $im = imagecreatetruecolor(100, 50); $bgColor = imagecolorallocate($im, 0, 0, 0); imagefill($im, 0, 0, $bgColor); // 添加文字水印 $textBox = imagettfbbox($fontSize, 0, $font, $text); $x = (100 - ($textBox[2] + $textBox[0]) / 2) / 2 - $textBox[0]; $y = (50 - ($textBox[7] + $textBox[1]) / 2) / 2 - $textBox[1]; imagettftext($im, $fontSize, 0, $x, $y, $color, $font, $text); // 输出图片 imagepng($im); imagedestroy($im); ?>
这段代码创建了一个包含水印文字的图片,并将其输出为PNG格式,你可以修改$text
、$font
、$color
和$fontSize
变量来自定义水印样式。
3、添加水印到目标图片
现在我们已经创建了水印图片,接下来我们需要将其添加到目标图片上,在watermark.php
文件中添加以下代码:
// 读取目标图片 $targetImage = 'path/to/target/image.jpg'; $targetImageType = exif_imagetype($targetImage); $createFunc = 'imagecreatefrom' . image_type_to_extension($targetImageType, false); $targetIm = $createFunc($targetImage); // 读取水印图片 $watermarkImage = 'path/to/watermark/image.png'; $watermarkIm = imagecreatefrompng($watermarkImage); // 获取水印图片尺寸 $sx = imagesx($watermarkIm); $sy = imagesy($watermarkIm); // 设置水印位置 $x = imagesx($targetIm) - $sx - 10; $y = imagesy($targetIm) - $sy - 10; // 合并水印和目标图片 imagecopy($targetIm, $watermarkIm, $x, $y, 0, 0, $sx, $sy); // 输出结果图片 switch ($targetImageType) { case IMAGETYPE_JPEG: imagejpeg($targetIm); break; case IMAGETYPE_PNG: imagepng($targetIm); break; case IMAGETYPE_GIF: imagegif($targetIm); break; } // 销毁图片资源 imagedestroy($targetIm); imagedestroy($watermarkIm);
这段代码读取目标图片和水印图片,然后将水印图片添加到目标图片的右下角,你可以根据需要修改$x
和$y
变量来调整水印位置。
4、完整代码
将以上代码整合到watermark.php
文件中,得到完整的加水印功能:
<?php header('Content-Type: image/png'); // 设置水印文字和字体 $text = '水印文字'; $font = 'Arial.ttf'; // 设置水印颜色和大小 $color = imagecolorallocatealpha($im, 255, 255, 255, 50); $fontSize = 20; // 创建图片 $im = imagecreatetruecolor(100, 50); $bgColor = imagecolorallocate($im, 0, 0, 0); imagefill($im, 0, 0, $bgColor); // 添加文字水印 $textBox = imagettfbbox($fontSize, 0, $font, $text); $x = (100 - ($textBox[2] + $textBox[0]) / 2) / 2 - $textBox[0]; $y = (50 - ($textBox[7] + $textBox[1]) / 2) / 2 - $textBox[1]; imagettftext($im, $fontSize, 0, $x, $y, $color, $font, $text); // 输出图片 imagepng($im); imagedestroy($im); // 读取目标图片 $targetImage = 'path/to/target/image.jpg'; $targetImageType = exif_imagetype($targetImage); $createFunc = 'imagecreatefrom' . image_type_to_extension($targetImageType, false); $targetIm = $createFunc($targetImage); // 读取水印图片 $watermarkImage = 'path/to/watermark/image.png'; $watermarkIm = imagecreatefrompng($watermarkImage); // 获取水印图片尺寸 $sx = imagesx($watermarkIm); $sy = imagesy($watermarkIm); // 设置水印位置 $x = imagesx($targetIm) - $sx - 10; $y = imagesy($targetIm) - $sy - 10; // 合并水印和目标图片 imagecopy($targetIm, $watermarkIm, $x, $y, 0, 0, $sx, $sy); // 输出结果图片 switch ($targetImageType) { case IMAGETYPE_JPEG: imagejpeg($targetIm); break; case IMAGETYPE_PNG: imagepng($targetIm); break; case IMAGETYPE_GIF: imagegif($targetIm); break; } // 销毁图片资源 imagedestroy($targetIm); imagedestroy($watermarkIm); ?>
通过以上步骤,你可以在PHP中给图片添加水印,你可以根据需要修改水印文字、字体、颜色、大小和位置,以满足你的个性化需求,希望这篇文章对你有所帮助,让你的作品更具特色。
还没有评论,来说两句吧...