php水印函数封装教程

在开发网站应用时,图片水印应该是比较常见的需求之一,可以为图片添加水印,保护图片版权,增加图片美观性等。在PHP中,实现图片水印可以使用GD库或ImageMagick等扩展库,这里我们以GD库为例来封装PHP水印函数。

GD库是一个开源的用于创建和操作图像的图形库,它可以通过PHP的扩展库来使用。GD库提供的函数可以用来处理各种图像格式,包括GIF、JPEG、PNG等,并且可以处理图片的裁剪、缩放、旋转等操作。下面我们来介绍一下PHP中使用GD库来实现图片水印的步骤:

1. 安装GD库

PHP官方提供了GD库的扩展库,可以通过以下命令来安装:

```shell

sudo apt-get install php-gd

```

2. 编写水印函数

我们可以编写一个PHP函数来实现图片水印的功能,函数原型如下:

```php

/**

* @param string $sourceImagePath 源图片路径

* @param string $watermarkImagePath 水印图片路径

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

* @param int $position 水印位置,默认为右下角

* @param int $opacity 水印透明度,默认为100

* @return bool 生成结果,成功返回true,失败返回false

*/

function watermark(string $sourceImagePath, string $watermarkImagePath, string $outputPath, int $position = 9, int $opacity = 100): bool

{

$sourceImage = @imagecreatefromjpeg($sourceImagePath);

$watermarkImage = @imagecreatefrompng($watermarkImagePath);

if (!$sourceImage || !$watermarkImage) {

return false;

}

$watermarkWidth = imagesx($watermarkImage);

$watermarkHeight = imagesy($watermarkImage);

$sourceWidth = imagesx($sourceImage);

$sourceHeight = imagesy($sourceImage);

switch ($position) {

case 1: // 左上角

$x = 0;

$y = 0;

break;

case 2: // 上中央

$x = floor(($sourceWidth - $watermarkWidth) / 2);

$y = 0;

break;

case 3: // 右上角

$x = $sourceWidth - $watermarkWidth;

$y = 0;

break;

case 4: // 左中央

$x = 0;

$y = floor(($sourceHeight - $watermarkHeight) / 2);

break;

case 5: // 正中央

$x = floor(($sourceWidth - $watermarkWidth) / 2);

$y = floor(($sourceHeight - $watermarkHeight) / 2);

break;

case 6: // 右中央

$x = $sourceWidth - $watermarkWidth;

$y = floor(($sourceHeight - $watermarkHeight) / 2);

break;

case 7: // 左下角

$x = 0;

$y = $sourceHeight - $watermarkHeight;

break;

case 8: // 中下部

$x = floor(($sourceWidth - $watermarkWidth) / 2);

$y = $sourceHeight - $watermarkHeight;

break;

case 9: // 右下角

default:

$x = $sourceWidth - $watermarkWidth;

$y = $sourceHeight - $watermarkHeight;

break;

}

imagecopymerge($sourceImage, $watermarkImage, $x, $y, 0, 0, $watermarkWidth, $watermarkHeight, $opacity);

$result = @imagejpeg($sourceImage, $outputPath);

imagedestroy($sourceImage);

imagedestroy($watermarkImage);

return $result;

}

```

在这个函数中,我们使用了imagecreatefromjpeg、imagecreatefrompng、imagesx、imagesy、imagecopymerge、imagejpeg、imagedestroy等GD库提供的函数实现了水印效果。

3. 调用水印函数

在使用这个水印函数时,可以根据需要传递不同的参数,比如指定水印位置、透明度等,不传递的参数会使用默认值。例如:

```php

watermark('source.jpg', 'watermark.png', 'output.jpg', 9); // 右下角添加水印,并将结果保存为output.jpg文件

```

这样就完成了使用GD库进行图片水印处理的整个过程。这个函数可以灵活地适应各种不同的图片水印需求,而且也很容易理解和使用。另外要注意的是,操作图片时要保证目录可写,并确保GD库已经正确安装和启用。

最后需要强调一点的是,PHP函数参数的缺省值需要赋值为false,而不是留空。如果留空,则当这个参数被调用时,它的值将被认为是NULL,一些PHP函数可能并不支持NULL参数,导致函数执行错误。

以上就是PHP水印函数封装教程的内容,希望对您有所帮助。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(10) 打赏

评论列表 共有 0 条评论

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