karolak/cakephp-image

CakePHP 3 的图像插件。

安装: 32

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

开放问题: 2

类型:cakephp-plugin

dev-master 2015-04-09 16:40 UTC

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 脚本
  • 编写测试