sitegeist / image-jack
图像优化的万能工具。同时介绍了下一代图像格式(next-gen-image-formats)的使用。
Requires
- php: >=7.4.0
- typo3/cms-core: ^11.5 || ^12.4
Requires (Dev)
- editorconfig-checker/editorconfig-checker: ^10.0
- phpspec/prophecy-phpunit: ^2.0
- squizlabs/php_codesniffer: ^3.0
- typo3/testing-framework: ^6.0 || dev-main
This package is auto-updated.
Last update: 2024-09-16 07:27:01 UTC
README
图像优化的万能工具。同时介绍了下一代图像格式(next-gen-image-formats)的使用。
它做了什么?
在处理过程中增加了优化现有jpg、gif和png文件的可能性。此外,它还可以为每个处理过的图像添加webP副本。
安装
使用composer添加扩展
composer require "sitegeist/image-jack"
- 通过维护模块完全清除所有处理过的图像
- 清除缓存
- 更改服务器配置(见下文)或激活回退驱动xclass
配置
Web服务器
为了提供webP图像,需要正确配置Web服务器。以下为Apache (.htaccess) 的示例
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_FILENAME} (.*)\.(png|gif|jpe?g)$
RewriteCond %{REQUEST_FILENAME}\.webp -f
RewriteRule ^ %{REQUEST_FILENAME}\.webp [L,T=image/webp]
<IfModule mod_headers.c>
<FilesMatch "\.(png|gif|jpe?g)$">
Header append Vary Accept
</FilesMatch>
</IfModule>
由于我们创建的webP图像是副本(保持原始图像不变),此配置在客户端支持的情况下提供webP图像。否则,提供原始图像。
存储API(beta版)
作为回退解决方案(例如,对于远程存储),在扩展设置中有一个选项可以激活存储驱动程序的xclass。对于每个需要扩展的存储驱动程序都需要有一个类。LocalDriver和AmazonS3Driver已经可用。为了避免缓存问题(第一个客户端定义提供的服务器图像格式),将客户端接受的头信息中的图像格式添加到页面缓存标识符中。如果启用此选项,则不再需要htaccess修改(见Web服务器)。
调度器/定时任务
要启动图像处理,有一个命令可用
jack:process --limit=20
图像逐个处理。通过更改限制,可以定义每次运行中要处理的图像数量。
需求
webp
对于webp转换,需要一个安装的Imagemagick或GraphicsMagick版本,并且需要支持webp。
您可以使用以下命令进行检查
gm -version | grep -i webp
或
convert -version | grep -i webp
当使用gd时,需要webP支持。
jpg优化
为了优化jpg文件,需要二进制文件"jpegoptim"。您可以使用以下命令进行检查
which jpegoptim
(应返回路径)
如果缺少它,可以通过以下命令安装,例如
apt install jpegoptim
png/gif优化
为了优化png和gif文件,需要二进制文件"optipng"。您可以使用以下命令进行检查
which optipng
(应返回路径)
如果缺少它,可以通过以下命令安装,例如
apt install optipng
扩展设置
通用
useLiveProcessing
如果启用,图像将使用LocalImageProcessor在请求时实时处理。这可能导致首次请求时负载很高和非常长的加载时间(取决于页面上的图像数量)。建议使用默认设置并使用可用的命令进行处理。
useFallbackDriver (beta版)
如果启用,将使用xclass扩展LocalDriver和AmazonS3Driver的getPublicUrl函数。如果htaccess解决方案不起作用,例如对于远程存储,可以使用此功能。有关更多详细信息,请参阅存储API(beta版)。
WebP
active
(取消)激活转换。
converter
应使用哪种方式来转换图像:Imagemagick/GraphicsMagick、GD或外部二进制文件
options
根据转换类型,此字段可用于不同的目的
- IM/GM:将直接传递给二进制的选项添加
- GD:新图像的质量(1 - 100)
- 外部:要使用的二进制的完整路径。您可以使用%s表示源图像和目标图像。
Avif
active
(取消)激活转换。
converter
应使用哪种方式来转换图像:Imagemagick/GraphicsMagick、GD或外部二进制文件
options
根据转换类型,此字段可用于不同的目的
- IM/GM:将直接传递给二进制的选项添加
- GD:新图像的质量(1 - 100)
- 外部:要使用的二进制的完整路径。您可以使用%s表示源图像和目标图像。
Jpeg
active
(启用/禁用)优化。
路径
jpegoptim二进制文件的路径。请使用完整路径,因为如果不使用完整路径,is_executable
将无法正确工作。
Png
active
(启用/禁用)优化。
路径
optipng二进制文件的路径。请使用完整路径,因为如果不使用完整路径,is_executable
将无法正确工作。
日志记录
仅激活应写入日志文件的级别。
自定义优化器/转换模板
自定义模板应扩展AbstractTemplate并实现TemplateInterface。只需使用现有的模板之一作为起点。
自定义模板可以像这样注册
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['image_jack']['templates']['myCustomTemplate'] = \Vendor\Extension\Templates\CustomTemplate::class;
Jack将自动检测并运行给定图像类型的新模板,如果它可用。
故障排除
日志被写入到var/log/typo3_image_jack_*.log
扩展设置提供了决定日志记录应有多详细的可能性。
特别感谢
本扩展受到了plan2net的webp扩展的启发。
作者与赞助商
此包的开发和公共发布得到了我们雇主https://sitegeist.de的慷慨赞助。