raincreativelab / shackles
基于规则的PHP图像处理器
Requires
- php: >=5.5.0
- league/flysystem: 1.0.1
- symfony/class-loader: 2.6.x-dev
Requires (Dev)
- mockery/mockery: 0.9.3
- phpunit/phpunit: 4.7.x-dev
This package is not auto-updated.
Last update: 2024-09-28 17:43:41 UTC
README
SHACKLES
什么是Shackles?
Shackle是一个可链式、基于规则的PHP图像处理库。简单来说,它让复杂的图像处理变得非常简单和容易。
以下代码将复制原始照片,裁剪到400 x 300像素,然后将其全部转换为灰度。
// Create a new chain $chain = new Chain(); $chain->setRules([ new Duplicate(), new Crop([ "width" => 400, "height" => 300 ]), new Grayscale() ]); // Create a new runner $runner = ChainBuilder::newRunner([ "source" => "/path/to/my/image/directory", "format" => "gs-{NAME}-{###}-{W}x{H}" ]); // Run the chain and apply to the image $runner ->process("image.jpg", 100) // 100 is the JPG output quality ->run($chain); // The following code will return the following image: // gs-image-15A-400x300.jpg // The '15A' is a random string chain
Shackles是如何工作的?
为了更好地理解Shackles的工作方式,以下是我们将使用的一些基本术语,以便于清晰地说明和保持一致性。
规则
是工作的基本单位。它包含图像将如何被处理。有4种常见的规则
规则名称清楚地定义了它所做的工作以及你期望它做什么。你可以创建自己的规则并将其附加到Shackle上。
链
是一系列规则,你可以将它们链式连接起来对图像执行一系列操作。每个规则的位置取决于它在链中的连接方式。
学习如何: 创建链
运行器
运行你设置的规则链。运行器接受你想要处理的图像,并使用规则链来处理目标图像。
学习如何: 运行你的链,链构建器,存储你的链,从字符串运行链
为什么使用Shackles?
Shackles只是我们在CMS中使用的组件之一。这个组件专门处理一件事——图像处理。
但因为我们想与可能觉得它有用的人分享,所以我们决定将其作为一个独立的组件供人们集成和使用。
用例
有时需要按一系列步骤处理图像。这些步骤可能包括调整大小、裁剪以生成缩略图,有时还需要以不同的长宽比生成多个缩略图版本。我知道还有其他库可以做到这一点,或者你可能有一些自己创建的。好吧,这正是Shackle要解决的问题。
Shackle将处理过程解耦,将其分解为一系列可重用、可链式的规则,你可以使用这些规则、配置以解决图像处理中的不同场景。由于其简单的设计和API,扩展组件简单直接。
规则
规则是工作的基本单位,它定义了图像将被如何处理或操纵。
Shackle中使用的任何规则都扩展了shackles\Rule
抽象类。抽象类要求实现类实现
/** * This is a custom method that will be used * to process the image. * * @param Image $image Image to process * * @return void */ abstract protected function processImage(Image $image);
以下方法签名应定义图像如何被处理或操作。