基于规则的PHP图像处理器

dev-master 2015-03-05 00:58 UTC

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);

以下方法签名应定义图像如何被处理或操作。