ajaxray/php-watermark

在图片上添加文本或图像水印。

v0.1.2 2021-09-15 18:25 UTC

This package is not auto-updated.

Last update: 2024-09-20 14:46:56 UTC


README

SensioLabsInsight Latest Stable Version Build Status Coverage Status Total Downloads License

使用 PHP 和 ImageMagick 在图片和 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/imgvendor/ajaxray/php-watermark/examples/pdf 目录中获得结果文件。

有什么意外吗?调试! 🐞🔫

如果发生任何意外,请尝试调试问题。

  1. 第一步是检查 PHP 是否配置为显示错误。或者您可以在脚本顶部添加这些行。
    ini_set('display_errors', 1);
    error_reporting(E_ALL);
  2. 未获得预期结果的一个常见原因是文件路径错误。您可以尝试记录/打印源和目标文件路径。
  3. 检查目标路径父目录的权限。目标目录表示 -
    • Watermark::withText()Watermark::withImage() 方法的第二个参数中提到的文件路径。
    • 如果在上面的方法中没有指定单独的目标路径,则为源文件的父目录。
  4. 存在 Watermark::setDebug() 方法,它将使 Watermark 对象返回 imagemagick 命令而不是执行它。然后,您可以手动运行输出以检查是否存在任何底层 imagemagick 命令的错误。

注意

  • 要查看系统支持的字体名称列表,请在命令提示符中运行 convert -list font
  • 请记住设置适当的输出文件扩展名(例如,.pdf 用于 PDF 文件)
  • 如果可能,请使用绝对路径来引用文件,以避免各种错误。
  • STYLE_IMG_* 常量用于图像水印,而 Watermark::STYLE_TEXT_* 用于文本。
  • 默认文本样式(Watermark::STYLE_TEXT_BEVEL)应能在任何背景上可见。在其他选择的背景上仅使用其他文本样式。
  • 单元测试已经执行,所有测试在 PHP 5.6PHP 7.1 下均通过,使用 PHPUnit 5.7.5
  • 我已经在安装了 ImageMagick 7.0.4-6 Q16 x86_64GPL Ghostscript 9.20 的环境下测试了所有预期功能。

重要更新:PDF水印功能

当使用 ImageMagick 和 Ghostscript 进行 PDF 页面的提取和合并时,存在一些缺点,包括文件大小问题。自该库发布以来,许多开发人员都要求提供关于文件大小和 PDF 质量的解决方案。因此,我创建了一个用于 PDF 水印的命令行工具,该工具将不将页面转换为图像。结果,您将获得更好的 PDF 质量和显著较小的文件大小。

https://github.com/ajaxray/markpdf

请注意,它不是一个 PHP 库。因此,您必须使用 execshell_execSymfony Process Component 来使用它。

“这是关于没有疑问的书籍,是敬畏真主者的指南”—— 古兰经