heyday/silverstripe-optimisedimage

使用 jpegoptim 和 optipng 等多种二进制工具来优化由 SilverStripe 创建的重采样图像

安装次数: 33,215

依赖关系: 0

建议者: 1

安全: 0

星标: 30

关注者: 29

分支: 8

类型:silverstripe-module

2.2.2 2016-05-11 08:25 UTC

This package is auto-updated.

Last update: 2024-08-29 04:04:11 UTC


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 使用的图像后端更改为 OptimisedGDBackendOptimisedImagickBackend。为此,在您的 mysite/_config/config.yml 中添加

Image:
    backend: OptimisedGDBackend

// or

Image:
    backend: OptimisedImagickBackend

配置选项

  • enabledCommands
  • availableCommands
  • binDirectory
  • optimisingQuality

至少需要覆盖您的配置中的 enabledCommands 以启用 SilverStripe 重采样图像的优化。

可以通过以下方式实现:

  1. 创建一个文件 mysite/_config/optimisedimage.yml
  2. 添加以下内容
---
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 实现的,以下列出了可用的变量顺序

  1. binDirectory
  2. 要优化的文件路径
  3. optimisingQuality

如果当定义自定义命令时需要以不同的顺序使用这些参数,您需要使用位置指定符,请参阅 PHP sprintf

许可证

优化后的图像根据 MIT 许可协议 许可