onigoetz / imagecache
面向所有人的图片处理与缓存
Requires
- php: >=8.0
- guzzlehttp/psr7: ^2.7
- intervention/image: ^3.3
Requires (Dev)
- mikey179/vfsstream: ^1.6.1
- mockery/mockery: ^1.6.2
- orchestra/testbench: ^6 || ^7 || ^8 || ^9
- phpunit/phpunit: ^9 || ^10 || ^11
- slim/slim: ^4
- travail/image-perceptualhash: ^0.1.0
This package is auto-updated.
Last update: 2024-09-11 20:32:00 UTC
README
使用预设自动生成您需要的图片尺寸
与任何框架兼容
工作原理
假设您的图片文件夹名为 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就能在下次访问时提供它。