php水印函数封装

在网站开发中,水印是常见的图片处理方式之一。水印可以保护图片版权、防止盗用、提升商业推广效果等。而针对图片进行水印处理,则需要使用到一些图片处理的函数或类库。

本篇文章将介绍如何使用PHP编写并封装一个简单的水印函数,可以通过调用该函数在图片上添加水印。同时,也会深入讲解水印相关的一些知识和注意要点。

1. 准备工作

在开始编写水印函数之前,需要安装GD库。GD库是一个开源的图形库,可以用来创建和处理图片。我们可以使用PHP的GD扩展来调用GD库。

安装GD库可以使用以下命令:

```bash

sudo apt-get install php-gd

```

安装完毕后在php.ini文件中开启GD库:

```bash

extension=gd.so

```

2. 编写水印函数

要实现一个添加水印的函数,需要处理以下几个步骤:

1. 打开原始图片文件。

2. 创建新的水印图片。

3. 在水印图片上写入文字或者插入图片。

4. 将水印图片叠加到原始图片上。

5. 输出新的图片。

下面是一个简单的水印函数的代码:

```php

/**

* 添加文字水印

* @param $srcImgPath string 原始图片的路径

* @param $watermarkText string 水印文字

* @param $outputImgPath string 输出图片路径

* @param $fontPath string 字体文件路径(如无则不传)

*/

function addWatermarkText($srcImgPath, $watermarkText, $outputImgPath, $fontPath = null) {

// 打开原始图片

$srcImg = imagecreatefromstring(file_get_contents($srcImgPath));

// 获取图片尺寸

$srcImgWidth = imagesx($srcImg);

$srcImgHeight = imagesy($srcImg);

// 创建新的水印图片

$watermarkImg = imagecreatetruecolor($srcImgWidth, $srcImgHeight);

// 设置水印文字颜色

$watermarkTextColor = imagecolorallocate($watermarkImg, 255, 255, 255);

// 如果有字体文件,则使用自定义字体

if (!empty($fontPath)) {

$fontPath = realpath($fontPath);

if (!file_exists($fontPath)) {

throw new Exception('字体文件不存在:' . $fontPath);

}

$textFont = 20;

$textMargin = 10;

// 为文本添加边距

$watermarkText = str_pad($watermarkText, strlen($watermarkText) + $textMargin * 2, " ", STR_PAD_BOTH);

// 设置水印文字

imagettftext($watermarkImg, $textFont, 0, $textMargin, $srcImgHeight - $textMargin, $watermarkTextColor, $fontPath, $watermarkText);

} else {

// 设置水印文字

imagestring($watermarkImg, 6, 10, 10, $watermarkText, $watermarkTextColor);

}

// 叠加水印图片

imagecopy($srcImg, $watermarkImg, 0, 0, 0, 0, $srcImgWidth, $srcImgHeight);

// 输出新的图片

imagejpeg($srcImg, $outputImgPath);

// 销毁图片资源

imagedestroy($srcImg);

imagedestroy($watermarkImg);

}

```

在这个函数中:

1. 首先打开原始图片并获取其大小。

2. 创建一个大小相同的水印图片。

3. 如果有字体文件,则使用`imagettftext()`函数在水印图片上写入文字;否则使用`imagestring()`函数。

4. 叠加水印图片到原始图片上。

5. 最后将新的图片保存到指定目录并销毁所有图片资源。

3. 实际应用

使用水印函数的方法十分简单。只需要传入相关参数,即可对图片添加水印,并输出新的图片文件。

```php

// 添加一个纯文本水印

addWatermarkText('original_image.jpg', 'My Watermark', 'new_image.jpg');

// 添加一个自定义字体格式的水印

addWatermarkText('original_image.jpg', 'My Watermark', 'new_image.jpg', 'WatermarkFont.ttf');

```

除此之外,我们还可以使用循环和数组来自动添加水印,批量处理图片:

```php

// 读取原始图片目录中的所有文件

$dir_path = '/path/to/your/images';

$files = scandir($dir_path);

// 允许的图片格式

$allowed_file_types = ['jpg', 'jpeg', 'png', 'gif'];

// 设置水印文字

$watermark_text = 'My Watermark';

foreach ($files as $filename) {

$ext = pathinfo($filename, PATHINFO_EXTENSION);

// 如果不是允许的图片格式则跳过

if (!in_array($ext, $allowed_file_types)) continue;

// 添加水印

addWatermarkText($dir_path . '/' . $filename, $watermark_text, $dir_path . '/new/' . $filename);

}

```

4. 注意事项

在使用水印处理函数的过程中,需要注意以下几个事项:

1. 保留原始图片

在添加水印之前应该保留原始图片,确保出现错误时可以借助该图片做进一步的处理和调试。

2. 不要改变图片尺寸

添加水印只是对图片增加了一层处理,而不应该改变图片原有的尺寸或比例。否则,可能会破坏图片的美感或导致显示不正常。

3. 字体文件要存在

在使用自定义字体的时候,需要确保字体文件确实存在。如果文件不存在,会抛出异常并终止程序执行。

4. 叠加水印的时间不能太晚

保持原始图片的清晰度是一项非常重要的任务。如果需要添加水印,则最好是在原始图片尺寸确定之后、调整图片质量之前进行。这样可以确保水印不会影响到原有的图片质量。

5. 结语

在开发网站的过程中,处理图片是非常重要的一部分。水印处理是图片处理的重要方式之一,有利于保护图片版权、防止盗用和提升商业推广效果等。在php中,可以使用GD库和图片处理函数快速地实现水印处理功能。在使用水印处理函数的过程中,需要注意图片尺寸、字体文件存在、叠加水印的时间等因素,以确保处理图片的效果和质量。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(85) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部