1. 简介
水印是一种常见的图片处理技术,可以在图片上添加一些信息或者标识,如公司LOGO、作者名字等。在PHP中,我们可以使用GD库来实现图片水印的添加。GD库是PHP自带的图像处理库,提供了众多的函数来对图片进行处理。
2. 准备工作
2.1 安装GD库
在使用GD库之前,需要确保PHP已经安装了GD库。可以通过phpinfo()函数来查看是否已经安装了GD库。
phpinfo();
在输出的信息中找到类似以下内容:
GD Support => enabled
GD Version => bundled (2.1.0 compatible)
如果GD Support的值为enabled,说明已经安装了GD库。
2.2 建立测试文件
在使用GD库之前,需要先建立一张测试图片。可以使用以下代码来创建一张大小为300x300,背景颜色为白色的测试图片。
// 创建一个300x300的空白图片
$image = imagecreatetruecolor(300, 300);
// 设置背景为白色
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);
// 保存图片
imagejpeg($image, 'test.jpg');
imagedestroy($image);
执行以上代码,会在当前目录下生成一张名为test.jpg的图片。
3. 添加图片水印
在PHP中,添加图片水印的方法可以分为以下几步:
打开源图片和水印图片;
将水印图片合并到源图片上;
保存合并后的图片。
3.1 打开源图片和水印图片
首先,我们需要打开源图片和水印图片。可以使用imagecreatefromjpeg()函数打开JPEG格式的图片,使用imagecreatefrompng()函数打开PNG格式的图片。例如,我们可以使用以下代码打开之前创建的test.jpg图片和一张名为watermark.png的水印图片:
// 打开源图片和水印图片
$source_image = imagecreatefromjpeg('test.jpg');
$watermark_image = imagecreatefrompng('watermark.png');
3.2 将水印图片合并到源图片上
接下来,需要将水印图片合并到源图片上。可以使用imagecopy()或者imagecopymerge()函数来实现。
使用imagecopymerge()函数可以控制水印图片的透明度,代码如下:
// 获取源图片和水印图片的宽度和高度
$source_width = imagesx($source_image);
$source_height = imagesy($source_image);
$watermark_width = imagesx($watermark_image);
$watermark_height = imagesy($watermark_image);
// 计算水印图片的位置
$offset_x = $source_width - $watermark_width;
$offset_y = $source_height - $watermark_height;
// 合并水印图片到源图片上
imagecopymerge(
$source_image, // 目标图像
$watermark_image, // 源图像
$offset_x, $offset_y, // 目标图像的位置
0, 0, // 源图像的位置
$watermark_width, // 拷贝的宽度
$watermark_height, // 拷贝的高度
60 // 透明度,0表示完全透明,100表示完全不透明。
);
以上代码将水印图片合并到了源图片的右下角。
3.3 保存合并后的图片
最后,需要将合并后的图片保存到磁盘中。可以使用imagejpeg()或者imagepng()函数来保存JPEG或PNG格式的图片。例如,我们可以使用以下代码将合并后的图片保存为一个名为output.jpg的JPEG格式的图片:
// 保存合并后的图片
imagejpeg($source_image, 'output.jpg');
4. 完整代码示例
下面是完整的添加水印到图片中的代码示例:
// 打开源图片和水印图片
$source_image = imagecreatefromjpeg('test.jpg');
$watermark_image = imagecreatefrompng('watermark.png');
// 获取源图片和水印图片的宽度和高度
$source_width = imagesx($source_image);
$source_height = imagesy($source_image);
$watermark_width = imagesx($watermark_image);
$watermark_height = imagesy($watermark_image);
// 计算水印图片的位置
$offset_x = $source_width - $watermark_width;
$offset_y = $source_height - $watermark_height;
// 合并水印图片到源图片上
imagecopymerge(
$source_image, // 目标图像
$watermark_image, // 源图像
$offset_x, $offset_y, // 目标图像的位置
0, 0, // 源图像的位置
$watermark_width, // 拷贝的宽度
$watermark_height, // 拷贝的高度
60 // 透明度,0表示完全透明,100表示完全不透明。
);
// 保存合并后的图片
imagejpeg($source_image, 'output.jpg');
// 销毁资源
imagedestroy($source_image);
imagedestroy($watermark_image);
5. 总结
PHP提供了强大的GD库,可以用来处理图片。图片水印是一种常见的图片处理技术,可以在图片上添加标识信息。本文介绍了如何使用PHP的GD库来添加图片水印,希望可以帮助大家。如果您有任何疑问或者建议,请在评论区留言。