xavier83ar/image-presenter

用于实时创建缩略图和图像变体的 CakePHP 插件

安装: 39

依赖项: 0

建议: 0

安全性: 0

星标: 1

关注者: 1

分支: 0

开放问题: 2

类型:cakephp-plugin

v1.0.7 2016-02-23 22:15 UTC

This package is auto-updated.

Last update: 2024-09-20 05:33:01 UTC


README

安装

您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。

安装 composer 包的推荐方法是

composer require xavier83ar/image-presenter

使用方法

加载插件

Plugin::load('ImagePresenter', ['routes' => true]);

配置您的变体...

'ImagePresenter' => [
    'variants' => [
        'thumbnail' => [
            'size' => [350, 250],
            'mode' => ImageInterface::THUMBNAIL_OUTBOUND,
            'filter' => ImageInterface::FILTER_LANCZOS
        ],
        'mini' => [
            'operation' => 'thumbnail',
            'size' => [120, 120],
            'mode' => ImageInterface::THUMBNAIL_INSET,
        ],
        'other' => [
            'operation' => function (ImageInterface $imagine) {
                return $imagine->resize(new Box(400, 300))->rotate(90);
            }
        ],
        'amazing' => [
            'operation' => function (ImageInterface $imagine) {
                return $imagine
                    ->resize(new Box(600, 320))
                    ->effects()->grayscale()->blur(5);
            }
        ],
    ],
]

以 "thumbnail" 开头的任何变体都将使用缩略图操作模式。目前有两种操作模式:缩略图,它设置了一个 ImageInterface::thumbnail() 操作,和闭包模式,允许您传递一个接收 ImageInterface 的闭包来处理。

这个助手使用 imagine/imagine 包进行图像操作,有关更多信息,请参阅 https://imagine.readthedocs.org/en/latest/

显示图像

最后加载并使用 ImageHelper

class AppView extends View
{
    public function initialize()
    {
        $this->loadHelper('ImagePresenter.Image');
    }
}

在模板中

<img src="<?= $this->Image->variant($img, 'thumbnail') ?>" alt="">

ImagePresenter\View\Helper\ImageHelper::variant() 方法将仅检查是否存在该变体的文件,如果存在,则返回相对于 webroot 的该文件路径;如果不存在,则返回到 PresenterController 的路径,该控制器负责生成该变体并提供文件。

这样,变体只有在需要时才会创建,并且只会创建一次。