bcairns / silverstripe-imageprofiles
允许在配置中定义图像配置文件,然后生成“懒加载”和按需创建图像的URL。
dev-master
2017-05-18 21:58 UTC
Requires
- silverstripe/framework: >=3.1.0
This package is auto-updated.
Last update: 2024-09-11 14:53:38 UTC
README
描述
通常,当在模板中使用图像,例如使用:$Image.SetWidth(200)时,此图像将在主页面请求时立即调整大小(如果需要)。如果需要处理的图像很多,这可能会使页面加载时间变长,甚至可能导致超时。
本模块通过使用预定义的图像配置文件,并在主页面请求中仅输出URL(对于可能尚未存在的图像)来解决此问题。这意味着主页面请求可以立即加载,然后通过单独的HTTP文件请求的404处理(例如来自<img>标签)按需生成图像。生成的图像在assets/_profiles中缓存,以便后续请求。
使用方法
安装模块后,您可以在config.yml中定义配置文件
ImageProfiles:
profiles:
Small:
- SetWidth: 100
Medium:
- Quality: 95
- SetWidth: 300
Large:
- SetWidth: 500
PaddedRed:
- SetWidth: 200
- Pad: [200,200,'#f00']
命令可以是任何正常的图像处理方法,或者使用Quality关键字,这将设置当前配置文件中剩余步骤的图像质量。
然后您可以在任何图像字段上使用这些配置文件
$Image.Small // output <img> tag
$Image.SmallURL // just get the URL
您还可以使用Profile和ProfileURL方法,其中配置文件名称作为参数
$Image.Profile(Small) // output <img> tag
$Image.ProfileURL(Small) // just get the URL
最后,如果您希望输出原始图像,可以使用Original和OriginalURL。这可以与AssetProxy结合使用,以便从远程获取缺失的图像。
$Image.Original // output <img> tag
$Image.OriginalURL // just get the URL
刷新
在修改定义的配置文件时,必须进行flush以使新设置生效。这还会删除已更改配置文件中的图像。
已知问题
- 如果更改了源图像(同时保留相同的文件名),则不会清除和重新生成配置文件版本
计划改进
- 允许更改默认
_profiles文件夹
致谢
- 本模块受到Drupal图像处理方法(源于ImageCache模块)的启发。
- 非常感谢unclecheese通过扩展帮助实现魔法方法(另请参阅Zen Fields)。