potime/imagine

适用于PHP 5.5的图像处理

1.0.2 2024-09-05 03:33 UTC

This package is auto-updated.

Last update: 2024-09-05 03:34:23 UTC


README

PHPUnit Coding Style

使用#php_imagine 标签在Twitter上发布关于它的推文。

受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中所有原生低级别图像处理库的功能整合到相同简单直观的OO API中。

要实现这一点,需要以下几项

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

上述工具应该是称为Imagine中的过滤器的更强大工具集的基本基础。

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

  • 图表和图形过滤器 - 饼图和条形图,带注释的线性图
  • 反射 - 苹果风格
  • 圆角 - 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镜像

例如,如果Imagine位于本地的/home/me/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=https://: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,这些临时文件将被附加到测试中作为附件。