ajaxray / php-watermark
在图片上添加文本或图像水印。
Requires
- php: >=5.6 <8
Requires (Dev)
- phpunit/phpunit: ^5.7 || ^6.5
- satooshi/php-coveralls: v2.*
This package is not auto-updated.
Last update: 2024-09-20 14:46:56 UTC
README
使用 PHP 和 ImageMagick 在图片和 PDF 上添加文本或图像水印。
先决条件
- PHP (版本 5.6 或更高)
- ImageMagick
- ghostscript(仅适用于 PDF 水印)
PHP ImageMagick 扩展不是必需的。
安装
使用 composer 添加为依赖项
$ composer require ajaxray/php-watermark
或者下载最新版本的 Zip 文件。
对于 PHP 版本 >= 5.6
到 <8
使用 v0.1.2
$ composer require ajaxray/php-watermark:v0.1.2
还应该检查 旧版 README 文件,以了解 PHP 版本 <8
如何使用?
<?php // Initiate with source image or pdf $watermark = new Watermark('/path/to/source.jpg'); // Customize some options (See list of supported options below) $watermark->withText('ajaxray.com') ->setFontSize(48) ->setRotate(30) ->setOpacity(.4) ->write('path/to/output.jpg'); // Watermark with Image $watermark->withImage('path/to/logo.png') ->setPosition(Watermark::POSITION_BOTTOM_RIGHT) ->setStyle(Watermark::STYLE_IMG_DISSOLVE) ->write('path/to/output.jpg');
如果跳过了 Watermark::write()
函数的输出文件名,则将覆盖源文件。
自定义选项
下表显示了自定义选项及其支持矩阵。列出应调用函数的 Ajaxray\PHPWatermark\Watermark
对象。勾选列标题表示以下内容 -
- Txt-Img:在图像上添加文本水印(示例,示例-平铺)
- Img-Img:在图像上添加图像水印(示例)
- Txt-PDF:在 PDF 上添加文本水印(示例)
- Img-PDF:在 PDF 上添加图像水印(示例)
⌛ = 即将推出!
顺便说一下,上述所有示例都是 这些示例 的结果。您只需通过命令行运行示例脚本即可生成它们 -
$ php vendor/ajaxray/php-watermark/examples/example_img.php $ php vendor/ajaxray/php-watermark/examples/example_pdf.php
然后您应该能在 vendor/ajaxray/php-watermark/examples/img
和 vendor/ajaxray/php-watermark/examples/pdf
目录中获得结果文件。
有什么意外吗?调试! 🐞🔫
如果发生任何意外,请尝试调试问题。
- 第一步是检查 PHP 是否配置为显示错误。或者您可以在脚本顶部添加这些行。
ini_set('display_errors', 1); error_reporting(E_ALL);
- 未获得预期结果的一个常见原因是文件路径错误。您可以尝试记录/打印源和目标文件路径。
- 检查目标路径父目录的权限。目标目录表示 -
- 在
Watermark::withText()
和Watermark::withImage()
方法的第二个参数中提到的文件路径。 - 如果在上面的方法中没有指定单独的目标路径,则为源文件的父目录。
- 在
- 存在
Watermark::setDebug()
方法,它将使Watermark
对象返回 imagemagick 命令而不是执行它。然后,您可以手动运行输出以检查是否存在任何底层imagemagick
命令的错误。
注意
- 要查看系统支持的字体名称列表,请在命令提示符中运行
convert -list font
- 请记住设置适当的输出文件扩展名(例如,.pdf 用于 PDF 文件)
- 如果可能,请使用绝对路径来引用文件,以避免各种错误。
STYLE_IMG_*
常量用于图像水印,而Watermark::STYLE_TEXT_*
用于文本。- 默认文本样式(
Watermark::STYLE_TEXT_BEVEL
)应能在任何背景上可见。在其他选择的背景上仅使用其他文本样式。 - 单元测试已经执行,所有测试在 PHP 5.6 和 PHP 7.1 下均通过,使用 PHPUnit 5.7.5。
- 我已经在安装了 ImageMagick 7.0.4-6 Q16 x86_64 和 GPL Ghostscript 9.20 的环境下测试了所有预期功能。
重要更新:PDF水印功能
当使用 ImageMagick 和 Ghostscript 进行 PDF 页面的提取和合并时,存在一些缺点,包括文件大小问题。自该库发布以来,许多开发人员都要求提供关于文件大小和 PDF 质量的解决方案。因此,我创建了一个用于 PDF 水印的命令行工具,该工具将不将页面转换为图像。结果,您将获得更好的 PDF 质量和显著较小的文件大小。
https://github.com/ajaxray/markpdf
请注意,它不是一个 PHP 库。因此,您必须使用 exec、shell_exec 或 Symfony Process Component 来使用它。
“这是关于没有疑问的书籍,是敬畏真主者的指南”—— 古兰经