karolak / cakephp-image
CakePHP 3 的图像插件。
dev-master
2015-04-09 16:40 UTC
Requires
- php: >=5.4
- cakephp/cakephp: ~3.0
- cakephp/migrations: ~1.0
- smottt/wideimage: dev-master
This package is auto-updated.
Last update: 2024-09-08 03:24:43 UTC
README
为 CakePHP 提供快速且简单的图像上传处理插件。
使用 WideImage 生成图像预设。请参阅 sourceforge 文档 页面。
安装
您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。
安装 composer 包的推荐方法是
$ composer require karolak/cakephp-image
或者在 composer.json 文件中手动添加此行到 "require" 键
"require": { ... "karolak/cakephp-image": "dev-master" }
并在控制台中运行
$ composer update
在您的 bootstrap.php 文件中添加一行(以在您的应用中启用插件)
Plugin::load('Image', ['bootstrap' => false, 'routes' => false]);
数据库准备
要创建数据库中用于存储上传图像信息的 "images" 表,请运行以下命令
$ bin/cake migrations migrate -p Image
行为配置参数
- fields:用于图像的输入字段,应使用文件输入字段的名称作为键,类型作为值(多个,一个)
- presets:包含一系列 WideImage 方法和它们的参数的预设数组
- path:上传图像应存储的基本路径
- quality:所有预设的图像质量(1 到 100 的整数)
- table:存储关于图像信息的表名。
用法
在您将文件上传字段添加到表单之前,您必须首先确保表单的 enctype 已设置为“multipart/form-data”
echo $this->Form->create($document, ['enctype' => 'multipart/form-data']); // OR echo $this->Form->create($document, ['type' => 'file']);
然后添加一个或多个文件输入
echo $this->Form->input('photos', ['type' => 'file']);
现在您必须配置您的表类中的行为。例如,将以下内容添加到您的 initialize 方法中
public function initialize(array $config) { $this->addBehavior('Image.Image', [ 'path' => Configure::read('App.wwwRoot').Configure::read('App.imageBaseUrl').'uploads', 'presets' => [ 'small' => [ 'resize' => [200, 200, 'outside', 'any'], 'crop' => ['center', 'center', 200, 200] ], 'big' => [ 'resize' => [1000, 1000, 'inside', 'any'] ] ], 'fields' => [ 'photos' => 'many' ], 'quality' => 80 ]); }
验证
要检查上传的图像,请使用 Cake 的标准验证方法(在 3.0 版本中它们添加了一些新的文件验证规则)。
接收图像
$document = $this->Documents->get($id, ['contain' => ['Images_DocumentsPhotos']]);
此示例假设您的表名为 Documents,用于上传图像的表单字段名为 photos。
辅助工具
您可以使用辅助工具来显示预设中的图像。只需将以下代码添加到 AppView 的 initialize 方法中
public function initialize() { if(Plugin::loaded('Image')) { $this->loadHelper('Image.Image'); } }
现在要使用预设渲染 img 标签中的图像,请使用
echo $this->Image->render($image); // original file echo $this->Image->render($image, ['preset' => 'small']); // image file from "small" preset echo $this->Image->render($image, ['preset' => 'big', 'alt' => 'Cool image']); // image file from "big" preset + img attributes
或者您可以直接获取图像 URL
echo $this->Image->url($image);
待办事项
- 扩展文档
- 用于重新生成所有预设图像的 shell 脚本
- 编写测试