onigoetz/imagecache

面向所有人的图片处理与缓存

3.0.0 2024-07-22 22:03 UTC

This package is auto-updated.

Last update: 2024-09-11 20:32:00 UTC


README

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

使用预设自动生成您需要的图片尺寸

与任何框架兼容

工作原理

假设您的图片文件夹名为 images,缓存文件夹名为 cache,并且有一个名为 200x200 的预设

当您调用URL /images/cache/200x200/image.jpg 并且文件不存在时,它将自动使用文件 images/image.jpg,应用预设,返回给客户端,并保存到请求的路径以便下次从web服务器提供。

以下是文件夹结构

images
├── image.jpg          // Original image
└── cache
    └── 200x200
        └── image.jpg  // Generated image using the `200x200` preset

缓存图片的URL构建如下

/<图片文件夹>/<缓存文件夹>/<预设名称>/<文件名称>

图片文件可以位于子文件夹中,例如 images/avatars/me.jpg 将具有此URL和 40x40 预设: images/cache/40x40/avatars/me.jpg

先决条件

要使其工作,您需要

  • PHP 5.5
  • 使用apache url_rewrite或nginx重写功能的干净URL

安装

预设配置

模块最重要的部分,即预设。

它们由一个键和一个要应用的操作数组组成。

键是您将在URL中使用的预设名称。

我的建议是将最终图片的大小放在预设名称中,这样可以增加预设的可重用性。因为如果您创建了一个名为“缩略图”的规则,并且您的布局改变了缩略图的大小,但只在某些地方,您很快就会在预设名称上陷入混乱。

预设结构

'name' => [
    action,
    action ...
]

操作结构

['action' => 'action_name', ... options ...]

操作和选项的完整列表

示例

'presets' => [
    '40X40' => [   // Exact size
        ['action' => 'scale_and_crop', 'width' => 40, 'height' => 40]
    ],
    'X85' => [     // Fixed height
        ['action' => 'scale', 'height' => 85]
    ],
    '60X200' => [  // Scale to fit inside
        ['action' => 'scale', 'height' => 200, 'width' => 60]
    ],
]

视网膜图像

此包也有助于生成适用于视网膜显示屏的图像。有两种方法可以实现。

使用像 retina.js 这样的插件,页面将自动尝试带有 @2x 的URL,位于扩展名之前。

当普通图像的URL为 /images/cache/200x200/koala.jpg 时,它将解析为原始文件 koala.jpg

但是,如果您调用URL /images/cache/200x200/koala@2x.jpg,它也将解析为文件 koala.jpg

它将使用 200x200 预设并将所有值加倍,因此如果您将图像裁剪到200x200像素,现在它将是一个400x400像素的图像。

并且它将保存回 images/cache/200x200/koala@2x.jpg,这样您的apache/nginx就能在下次访问时提供它。