imagine/imagine

PHP 5.3 的图像处理

安装: 55,892,072

依赖项: 408

建议者: 24

安全性: 0

星星: 4,416

关注者: 129

分支: 530

公开问题: 30

1.3.5 2023-06-07 14:49 UTC

README

PHPUnit Coding Style

使用 #php_imagine 标签在推特上讨论。

受 Python 的 PIL 和其他图像库启发的 PHP 图像处理库。

要求

Imagine 库有以下要求

  • PHP 5.5+

根据所选的图像实现,您可能需要以下 PHP 扩展之一

  • GD2
  • Imagick(使用 ImageMagick 版本 6.2.9 或更高版本,但不是 7.0.7-32)
  • Gmagick

要读取 EXIF 元数据(例如,用于自动旋转),请激活 PHP exif 扩展。这是可选的:Imagine 不需要 PHP exif 扩展也能工作,但此时它无法读取和操作图像方向或其他 EXIF 元数据。

使用 composer 安装

php composer.phar require imagine/imagine

基本原则

Imagine 的主要目的是提供所有必要的功能,以将 PHP 中所有本机低级图像处理库的功能统一到简单直观的面向对象 API 中。

要实现这一点,需要一些必要的事情

  • 图像处理工具,如缩放、裁剪等。
  • 绘图 API - 创建基本形状和高级图表,在图像上写文字
  • 遮罩功能 - 能够将黑白或灰度图像作为遮罩应用,导致应用遮罩的图像的半透明或绝对透明

上述工具应该是名为 Imagine 中的 Filters 的更强大工具集的基本基础。

一些即将推出的过滤器的想法

  • 图表和绘图过滤器 - 饼图和柱状图,带注释的线性图
  • 反射 - 苹果风格
  • 圆角 - Web 2.0

文档

演示文稿

文章

贡献

分支

新拉取请求应基于 develop 分支。 master 分支是稳定分支:它通常与最新版本相匹配,但可能略有提前。

测试组

一些 PHPUnit 测试被标记为跳过(例如,需要支持多层的驱动程序并使用 GD 驱动程序执行的测试)。此外,如果您没有安装 gmagick,则 gmagick 测试将被标记为跳过。

如果您不想运行被标记为“始终跳过”的测试,可以告诉 PHPUnit 排除 always-skipped 组。同样适用于需要特定驱动程序的测试(gdimagickimagick)。

例如,要排除 always-skippedgmagick 测试,可以使用以下命令选项启动 phpunit

composer run test -- --exclude-group always-skipped,gmagick

开发环境

设置包含所有必需库的环境可能非常困难。为了在本地运行测试,可以使用 Imagine 用于测试拉取请求的相同 Docker 镜像

例如,如果您在 /home/me/imagine 文件夹中本地安装了 Imagine,您可以使用以下非常简单的方法运行 PHP 8.1 的测试,并使用 GD 和 Imagick

  1. 使用以下命令启动一个临时的 Docker 容器
    docker run --rm -it -v /home/me/imagine:/app -w /app ghcr.io/php-imagine/test:8.1-gd-imagick bash
  2. 在 Docker 容器内部,运行以下命令
    # Start a local web server: some tests require it
    cd tests
    php -n -S 0.0.0.0:8013 >/dev/null 2>&1 &
    cd ..
    # Tell the tests that the local web server is available at the port 8013
    export IMAGINE_TEST_WEBSERVERURL=http://localhost:8013
    # Install the composer dependencies
    composer update
    # Run the tests
    composer run test -- --exclude-group always-skipped,gmagick

注意:此方法在 Windows 上也有效:只需使用以下命令启动 Docker 容器即可

docker run --rm -it -v C:\Path\To\Imagine:/app -w /app ghcr.io/php-imagine/test:8.1-gd-imagick bash

构建测试文件

许多测试会在 tests/tmp 目录中创建包含构建图像的临时文件。这些临时文件将与预期图像进行比较,然后被删除。如果您想保留这些临时文件(例如,检查正在构建的内容),可以设置 IMAGINE_TEST_KEEP_TEMPFILES 环境变量。如果 GitHub Action 测试中配置了 IMAGINE_TEST_KEEP_TEMPFILES,则这些临时文件将作为附件附加到测试中。