xavier83ar / image-presenter
用于实时创建缩略图和图像变体的 CakePHP 插件
v1.0.7
2016-02-23 22:15 UTC
Requires
- php: >=5.4.16
- cakephp/cakephp: ~3.0
- imagine/imagine: ^0.6.3
Requires (Dev)
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
的路径,该控制器负责生成该变体并提供文件。
这样,变体只有在需要时才会创建,并且只会创建一次。