heyday / silverstripe-optimisedimage
使用 jpegoptim 和 optipng 等多种二进制工具来优化由 SilverStripe 创建的重采样图像
Requires
- composer/installers: ~1.0
- symfony/process: ~2.3
README
此模块提供两种可以独立配置的图像处理服务
- 在 SilverStripe 重采样的图像上运行命令行图像优化工具:在不明显降低图像质量的情况下减小生成图像的文件大小
- 在上传图像时调整图像大小以适应配置的尺寸:防止大量尺寸的图像进入资产并成为重采样时的内存问题
对于 SilverStripe 2.4
版本,请查看 0.1
分支。
此模块作为部分提供了对一些常见图像优化工具(例如 jpegoptim 和 optipng)的配置(例如),尽管可以使用图像优化服务使用任何命令行程序。此模块未捆绑优化程序二进制文件,因此您需要将要在目标系统上安装的任何程序安装到目标系统上。
请注意,仅优化服务模块(例如使用 CroppedImage、SetWidth、SetHeight、PaddedResize 等)优化重采样图像。如果您想在不调整图像大小的情况下优化图像,目前有一个触发优化的解决方案。
安装(使用 composer)
$ composer require heyday/silverstripe-optimisedimage
用法
在上传时重采样图像
默认情况下,上传时不启用重采样。要激活它,需要将 ResampleImage
扩展添加到 Image
。在您的 mysite/_config/config.yml
中添加
Image: extensions: - ResampleImage
上传图像的默认最大宽度和高度为 1024 x 1024 像素。大于此尺寸的图像将被缩放到这个尺寸。
您可以通过在 mysite/_config/config.yml
中覆盖默认配置来自定义上传图像的最大宽度和高度
ResampleImage: max_x: 2000 max_y: 2500
请注意,上传时的重采样是一个破坏性过程:原始上传图像将被丢弃。
优化 SilverStripe 重采样图像 - 选择后端
根据您是想使用 GD 还是 Imagick,需要将 SilverStripe 使用的图像后端更改为 OptimisedGDBackend
或 OptimisedImagickBackend
。为此,在您的 mysite/_config/config.yml
中添加
Image: backend: OptimisedGDBackend // or Image: backend: OptimisedImagickBackend
配置选项
- enabledCommands
- availableCommands
- binDirectory
- optimisingQuality
至少需要覆盖您的配置中的 enabledCommands
以启用 SilverStripe 重采样图像的优化。
可以通过以下方式实现:
- 创建一个文件
mysite/_config/optimisedimage.yml
- 添加以下内容
--- After: 'silverstripe-optimisedimage/config#core' --- ImageOptimiserService: enabledCommands: - jpegoptim - optipng
如果您想添加自己的命令,可以覆盖 availableCommands
例如。
--- After: 'silverstripe-optimisedimage/config#core' --- ImageOptimiserService: enabledCommands: - jpegoptim - optipng availableCommands: jpg: jpegoptim: '%s/jpegoptim -p --strip-all --all-progressive %s' png: optipng: '%s/optipng %s -o 1 -strip all -i 1' gif: optipng: '%s/optipng %s -o 1 -strip all'
如果您的二进制文件不在 /usr/local/bin/
,您可以覆盖此设置,通过设置 binDirectory
--- After: 'silverstripe-optimisedimage/config#core' --- ImageOptimiserService: enabledCommands: - jpegoptim - optipng binDirectory: '/home/user/bin/'
如果您的二进制文件不在同一目录下,您需要通过覆盖 availableCommands
手动输入命令。
--- After: 'silverstripe-optimisedimage/config#core' --- ImageOptimiserService: enabledCommands: - jpegoptim - optipng availableCommands: jpg: jpegoptim: '/my/special/path/jpegoptim -p -m%3$d --strip-all %2$s'
当构建命令时,某些变量会暴露给命令,这是通过 sprintf
实现的,以下列出了可用的变量顺序
binDirectory
- 要优化的文件路径
optimisingQuality
如果当定义自定义命令时需要以不同的顺序使用这些参数,您需要使用位置指定符,请参阅 PHP sprintf
许可证
优化后的图像根据 MIT 许可协议 许可