tohimi / kirby-magick-extended
在 Kirby 中使 GIF 生效
1.1.0
2023-02-23 23:26 UTC
Requires
- php: >=8.0.0
- getkirby/composer-installer: ^1.2
Requires (Dev)
- getkirby/cms: ^3.8
README
Kirby ImageMagick 扩展
此插件扩展了 Kirby 内置的 ImageMagick 驱动,增加了处理动画或多层图像的功能。
问题
当将动画图像转换为其他格式时,ImageMagick 会逐帧转换并输出为单独的文件。这不符合 Kirby 的预期,因为 Kirby 需要输出单个图像文件。此插件通过预先检查图像的帧数来解决这个问题,如果目标格式不支持多帧,则仅转换第一帧。它还添加了一个新的选项 frame
来手动指定帧索引。此外,此插件还增加了对 APNG
图像的支持,因为 ImageMagick 默认需要被指示将其视为动画图像。
检测可用的图像帧需要 identify
命令可用,这可以被视为破坏性更改,因此创建了此插件,因为它不太可能合并到 Kirby Core 中以修复各种非常狭窄的边缘情况。
要求
- Kirby 3.8+
- PHP 8.0+
- ImageMagick 7.0+,带有
convert
和identify
命令
安装
下载
下载并将此存储库复制到 /site/plugins/kirby-magick-extended
。
Composer
composer require tobimori/kirby-magick-extended
使用方法
在配置中设置驱动器
// site/config/config.php return [ 'thumbs.driver' => 'im-extended', ];
启用后,插件将自动检测动画图像,并在目标格式不支持时仅转换第一帧。
使用 frame
选项
// In your template file <?php if($image = $page->animated()->toFile()) : $thumbOptions = [ 'width' => 100, 'height' => 100, 'frame' => 0, // specify frame index 'format' => 'png', ]; ?> <img src="<?= $image->thumb($thumbOptions)->url() ?>" /> <?php endif ?>
禁用 APNG 检测
// In your template file <?php if($image = $page->animated()->toFile()) : $thumbOptions = [ 'width' => 100, 'height' => 100, 'apng' => false, // disable APNG detection 'format' => 'png', ]; ?> <img src="<?= $image->thumb($thumbOptions)->url() ?>" /> <?php endif ?>
自定义 identify
二进制路径
// site/config/config.php return [ 'thumbs' => [ 'identifyBin' => 'identify', ], ];
未来?
- 从 PR 添加单元测试
- 添加 APNG 支持并自动添加
APNG:
前缀 - 获得合并到 Kirby Core 的批准 - 跟踪在 PR #4275
致谢
此插件扩展了由 Bastian Allgeier 编写的 Kirby 的 ImageMagick 驱动,许可协议为 MIT 许可协议。
许可协议
MIT 许可协议 版权所有 © 2023 Tobias Möritz