给图片添加水印是保护图片版权和提升品牌识别度的有效方式,就让我们一起来看看如何在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中给图片添加水印,你可以根据需要修改水印文字、字体、颜色、大小和位置,以满足你的个性化需求,希望这篇文章对你有所帮助,让你的作品更具特色。




 
		 
		 
		 
		
还没有评论,来说两句吧...