【问题标题】:Create thumbnail images after using the CakePHP 2 upload plugin使用 CakePHP 2 上传插件后创建缩略图
【发布时间】:2016-04-11 03:35:43
【问题描述】:

我使用 CakePHP Upload plugin 已经有一段时间了,我真的很满意:

public $actsAs = array(
    'Upload.Upload' => array(
        'image' => array(
            'fields' => array(
                'dir' => 'dir'
            ),
            'thumbnailSizes' => array(
                'xvga' => '1024x768',
                'vga' => '640x480',
                'thumb' => '300x300'
            ),
            'thumbnailMethod'  => 'php',
        )
    )
);

在一个新的用例中,我必须制作一些比静态降级分辨率到 640x640 或 300x300 更好的缩略图。我希望每个图像方向都有一个分辨率,或者能够说图像不应超过 30kB。

插件作者 Jose Gonzales 明确表示上传插件不会创建缩略图:

此插件不创建缩略图。您可以使用自定义 Transformer 创建文件上传的修改版本。

我想知道如何与现有的上传插件一起实现这一点?

【问题讨论】:

    标签: php cakephp image-processing thumbnails cakephp-2.x


    【解决方案1】:

    在一个新的用例中,我必须制作一些比静态降级分辨率到 640x640 或 300x300 更好的缩略图

    插件处理上传后,是什么阻止您进行自定义图像操作?您也可以扩展该行为并添加您想要的内容。

    您可以使用我的Imagine plugin,它带有一个简单的图像处理行为。或者结合FileStorage使用Imagine在上传后自动处理图片。

    或者直接使用the underlying library Imagine。

    我想要每个图像方向的分辨率或能够说图像不应超过 30kB。

    为此使用验证规则。

    【讨论】:

    • 那个插件看起来不错,但不幸的是它适用于 CakePHP 3。
    • 阅读的不仅仅是标题?有一个 bold 行,其中包含从 2 迁移到 3 的链接。或者直接使用 Imagine。所以检查分支/标签。 github.com/burzum/cakephp-imagine-plugin/tree/1.x
    【解决方案2】:

    最后我使用了 thephpleague 的 glide: https://github.com/thephpleague/glide

    如文档页面所述,它允许“即时”图像处理,例如:

    • 使用基于 HTTP 的简单 API 调整、调整图像大小和添加效果。
    • 经过处理的图像会自动缓存并提供给 far-future 过期的标头。
    • 改变方向
    • 添加水印
    • 添加过滤器
    • 添加边框
    • 定义图片的最大尺寸

    在 CakePHP 中实现就这么简单(不需要插件)。在 composer.json 中添加库作为依赖项:

    "require": {
        "league/glide" : "1.0.x"
    },
    

    运行./composer.phar update

    在控制器动作中可以这样调用:

    public function imageResize() {
        $server = League\Glide\ServerFactory::create([
            'source' => 'files',
            'cache' => 'files/cache',
            'watermarks' => 'files/watermarks'
        ]);
    
        $server->outputImage($path, $_GET);
    }
    

    所以我可以像这样简单地从应用中调用图像:

    https://www.url.com/images/imageResize?w=480&mark=mark.png&markpos=right&markh=60&markpad=4
    

    另一个有用的库是自适应图像:http://adaptive-images.com

    它会检测您的访问者的屏幕尺寸,并自动创建、缓存和提供您网页嵌入的 HTML 图像的适合设备的重新缩放版本。无需标记更改。它旨在与响应式设计一起使用,并与流体图像技术结合使用。

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 2013-04-08
      • 1970-01-01
      • 2013-05-31
      • 2013-12-16
      • 2020-03-10
      • 2012-09-21
      • 2017-03-19
      • 2011-08-11
      相关资源
      最近更新 更多