炭黑 / image
v5.0.0
2024-03-13 15:05 UTC
Requires
- php: ^7.4 || ^8.0
- charcoal/factory: ^5.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
Suggests
- ext-SimpleXML: To parse sprite (SVG) property.
- ext-imagick: To use the imagick driver.
Replaces
- dev-main / 5.x-dev
- v5.0.0
- v4.1.0
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.2
- v4.0.1
- v4.0.0
- v3.1.8
- v3.1.7
- v3.1.6
- v3.1.5
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.2
- v0.4.3.3
- v0.4.3.2
- v0.4.3.1
- v0.4.3
- v0.4.2.1
- v0.4.2
- v0.4.1
- v0.4
- v0.3
- v0.2
- v0.1
- dev-mcaskill-develop
- dev-mcaskill-strip-metadata
This package is auto-updated.
Last update: 2024-09-13 16:09:20 UTC
README
图像包提供了一致的API,用于图像处理和集成,包括GD(即将推出)和ImageMagick(通过PHP扩展或通过shell命令)。
安装
composer require charcoal/image
概述
为什么还需要另一个PHP图像库?
为什么不呢? 炭黑图像库已经开发和应用于内部项目近10年。最近,它已被重写为更现代的PHP风格,并以开源许可(MIT)发布。
与现有的PHP库(如 Imagine 或 Intervention)的主要区别是
- 效果参数以数组形式发送。
- 是
blur($sigma, $radius)
还是blur($radius, $sigma)
? - 使用炭黑图像库时,它是恒定的:
blur([ 'radius' => $radius, 'sigma' => $sigma ]);
- 是
- 它支持 ImageMagick 二进制文件
- 这似乎是一个相当常见的设置,即ImageMagick安装在服务器上,但PHP的 Imagick 库没有安装。
- 除了微小的 charcoal/factory 之外,没有外部依赖。
用法
通常,图像包用于加载图像,执行操作(称为 效果,如模糊、缩放、水印等)并写入修改后的图像。
使用 setData()
所有效果可以一次性添加到一个数组中。
$img = new Charcoal\Image\Imagick\ImagickImage(); $img->setData([ 'source' => 'example.png', 'target' => 'example-modified.png', 'effects' => [ [ 'type' => 'resize', 'width' => 600, ], [ 'type' => 'blur', 'mode' => 'gaussian', 'sigma' => 5, ], ], ]); $img->process(); $img->save();
setData()
对于效果来自JSON配置结构等场景非常适用。
使用魔术方法
所有效果也可以作为图像的方法(使用 __call()
魔术)使用。
use Charcoal\Image\Imagick\ImagickImage as Image; $img = new Image(); $img->open('example.png'); $img->resize([ 'width' => 600 ]); $img->blur([ 'mode' => 'gaussian', 'sigma' => 5 ]); $img->save();
链式版本
此外,还展示了使用 ImageFactory
构造函数方法。
use Charcoal\Image\ImageFactory; $factory = new ImageFactory(); $img = $factory->create('imagemagick'); $img->open('example.png') ->resize([ 'mode' => 'best_fit', 'width' => 350, 'height' => 350, ]) ->rotate([ 'angle' => 90, ]) ->modulate([ 'luminance' => 50, ]) ->save('modified-target.png');
可用的效果和操作在 API 文档 中有记录。
可用的图像驱动器
目前只有2个可用的驱动器
imagick
- imagick驱动器使用基于imagemagick的
Imagick
PHP扩展。
- imagick驱动器使用基于imagemagick的
imagemagick
- imagemagick驱动器直接使用imagemagick二进制文件,在单独的shell进程中运行操作,而不是直接在PHP中。
- 系统上应该安装并可以从PHP进程访问的命令
convert
、mogrify
和identify
。
👉 即将推出,使用PHP内建图像功能的
gd
驱动器。
如何选择驱动器
有两种不同的方法为特定驱动器实例化一个 Image 对象。
直接
$img = new Charcoal\Image\Imagick\ImagickImage(); // or $img = new Charcoal\Image\Imagemagick\ImagemagickImage();
使用提供的 ImageFactory
use Charcoal\Image\ImageFactory; $factory = new ImageFactory(); $img = $factory->create('imagick'); // or $img = $factory->create('imagemagick');