如何使用PHP添加水印到图片中

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库来添加图片水印,希望可以帮助大家。如果您有任何疑问或者建议,请在评论区留言。

后端开发标签