怎么在php中添加水印
时间 : 2023-03-26 11:19:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在PHP中添加水印一般分为两种方式:文字水印和图片水印。

1. 文字水印

文字水印的实现比较简单,只需要在图片上添加一段文字即可。以下是一个示例代码:

```php

// 加载图片

$image = imagecreatefromjpeg('example.jpg');

// 设置文字颜色

$color = imagecolorallocate($image, 255, 255, 255);

// 设置字体样式和大小

$font = 'arial.ttf'; // 字体文件路径和文件名

$fontSize = 20;

// 添加水印

$text = 'example.com'; // 水印内容

imagettftext($image, $fontSize, 0, 10, 30, $color, $font, $text);

// 输出图片并保存

header('Content-Type: image/jpeg');

imagejpeg($image, 'example_with_watermark.jpg');

// 释放资源

imagedestroy($image);

该代码会在指定图片上添加一个 `example.com` 的水印,并保存为新的图片文件。

2. 图片水印

图片水印的实现需要先加载一张水印图片,然后将其覆盖到原图上。以下是一个示例代码:

```php

// 加载图片和水印

$image = imagecreatefromjpeg('example.jpg');

$watermark = imagecreatefrompng('watermark.png');

// 获取原图和水印的尺寸信息

$imageWidth = imagesx($image);

$imageHeight = imagesy($image);

$watermarkWidth = imagesx($watermark);

$watermarkHeight = imagesy($watermark);

// 计算水印坐标(在原图中居中)

$watermarkX = ($imageWidth - $watermarkWidth) / 2;

$watermarkY = ($imageHeight - $watermarkHeight) / 2;

// 添加水印

imagecopy($image, $watermark, $watermarkX, $watermarkY, 0, 0, $watermarkWidth, $watermarkHeight);

// 输出图片并保存

header('Content-Type: image/jpeg');

imagejpeg($image, 'example_with_watermark.jpg');

// 释放资源

imagedestroy($image);

imagedestroy($watermark);

该代码会在指定图片上添加一个水印图片,并保存为新的图片文件。

以上是两种方式的实现方式,可以根据实际需求选择使用。

在PHP中添加水印可以采用GD库来实现。GD库是一个用来动态创建图像的PHP程序扩展库,可以利用它来生成、处理和输出图像。

添加水印的步骤:

1. 打开原始图片,即需要添加水印的图片

2. 创建水印图片,即水印图片的来源。可以是一张Logo,一行文字等。

3. 将水印图片复制到原始图片上,并设置水印图片的位置、透明度、大小等参数。

4. 输出处理后的图片。

下面是具体的代码实现:

```php

//打开原始图片

$srcImg = imagecreatefromjpeg('original.jpg');

//创建水印图片

$watermark = imagecreatefrompng('watermark.png');

//获取原始图片和水印图片的宽度和高度

$srcImgWidth = imagesx($srcImg);

$srcImgHeight = imagesy($srcImg);

$watermarkWidth = imagesx($watermark);

$watermarkHeight = imagesy($watermark);

//设置水印图片的位置,这里设置为原始图片底部居中

$positionX = ($srcImgWidth - $watermarkWidth) / 2;

$positionY = $srcImgHeight - $watermarkHeight - 10;

//将水印图片复制到原始图片上,并设置水印图片的透明度为30%

imagecopymerge($srcImg, $watermark, $positionX, $positionY, 0, 0, $watermarkWidth, $watermarkHeight, 30);

//输出处理后的图片

header('Content-Type: image/jpeg');

imagejpeg($srcImg);

imagedestroy($srcImg);

imagedestroy($watermark);

其中,imagecreatefromjpeg()函数用于打开原始图片(这里假设原始图片是JPG格式的),imagecreatefrompng()函数用于创建水印图片(这里假设水印图片是PNG格式的)。imagesx()函数和imagesy()函数用于获取图片的宽度和高度。

然后,可以使用imagecopymerge()函数将水印图片复制到原始图片上,并设置水印图片的透明度为30%。最后,使用imagejpeg()函数输出处理后的图片。同时要记得使用imagedestroy()函数释放资源。

需要注意的是,PHP需要开启GD库才能运行以上代码。可以在php.ini配置文件中将extension=php_gd2.dll的前面的分号去掉,或者在代码中添加extension_loaded(‘gd’)的判断来确保GD库已经加载。

实际使用中,还需要根据不同的情况来调整参数,比如水印图片的大小和位置、透明度等。