这个项目能做什么

Spatie 的 image-optimizer 是一个 PHP 库,通过将图像文件传入一条可配置的外部优化二进制工具链来压缩图像文件。支持的格式有 PNG、JPG、WEBP、AVIF、SVG 和 GIF。给定路径上的图像会被优化后的版本覆盖,也可以将优化后的副本写入单独的输出路径。 通过 Composer 安装(`composer require spatie/image-optimizer`)。该包会检测系统中存在哪些优化二进制文件并自动使用它们。文档中列出的工具包括 JpegOptim、Optipng、Pngquant 2、SVGO 1、Gifsicle、cwebp 和 avifenc,并提供了 Ubuntu/Debian、macOS(Homebrew)以及 Fedora/RHEL/CentOS 的安装说明。 文档说明了各格式的处理行为:JPG 通过 JpegOptim 处理,质量为 85,去除元数据并采用渐进式编码;PNG 先通过 Pngquant 2,再通过 Optipng;SVG 使用 SVGO 进行压缩,采用默认设置但去掉 cleanupIDs 和 removeViewBox 插件;GIF 使用 Gifsicle,优化级别为 3;WEBP 使用 cwebp,采用高投入设置;AVIF 使用 avifenc,并带有恒定质量和 SSIM 调优选项。README 指出 SVGO 可能会破坏某些 SVG。 用法围绕 `OptimizerChainFactory::create()` 和 `optimize()` 展开。可以通过 `setTimeout()` 为每个优化器设置超时。错误处理是可配置的:默认情况下失败会被记录,链会继续执行;而 `throws()` 会重新抛出异常并中止;也可以传入一个可调用对象来检查异常、优化器和图像,以决定是否继续。可以通过添加带有各自选项的优化器实例来构建自定义链,自定义优化器可以实现 `Optimizer` 接口,或在不使用二进制文件的情况下(例如调用外部 API)继承 `BaseSelfHandlingOptimizer`。可以附加 PSR-3 日志记录器,以记录运行了哪些优化器和命令及其输出。 README 包含 JPG、WEBP、AVIF、PNG 和 SVG 的示例转换,以及文件大小缩减和 DSSIM 值。它还指向 Laravel、WordPress 和 SilverStripe 集成。该项目采用 MIT 许可证,由 Spatie 维护。