bcairns/silverstripe-imageprofiles

允许在配置中定义图像配置文件,然后生成“懒加载”和按需创建图像的URL。

安装: 50

依赖项: 0

建议者: 0

安全: 0

星级: 3

关注者: 1

分支: 3

类型:silverstripe-module

dev-master 2017-05-18 21:58 UTC

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)。