このプロジェクトについて

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は品質85、メタデータの除去、プログレッシブエンコーディングを指定してJpegOptimを通します。PNGはPngquant 2に続いてOptipngを通します。SVGはcleanupIDsとremoveViewBoxプラグインを除いたデフォルト設定でSVGOにより最小化されます。GIFは最適化レベル3でGifsicleを使用します。WEBPは高負荷設定でcwebpを使用します。AVIFはconstant-qualityとSSIMチューニングオプションを指定してavifencを使用します。READMEにはSVGOが一部のSVGを壊す可能性があることが記載されています。 使用方法の中心は`OptimizerChainFactory::create()`と`optimize()`です。タイムアウトは`setTimeout()`でオプティマイザごとに設定できます。エラー処理は設定可能で、デフォルトでは失敗がログに記録されてチェーンが継続しますが、`throws()`は例外を再スローして中断し、callableは例外、オプティマイザ、画像を検査して継続するかどうかを判断できます。カスタムチェーンは独自のオプションを持つオプティマイザインスタンスを追加することで構築でき、カスタムオプティマイザは`Optimizer`インターフェースを実装するか、外部APIの呼び出しなどバイナリを持たないケース向けに`BaseSelfHandlingOptimizer`を拡張できます。PSR-3ロガーをアタッチして、どのオプティマイザとコマンドが実行され、その出力がどうであったかを記録できます。 READMEにはJPG、WEBP、AVIF、PNG、SVGについて、ファイルサイズ削減とDSSIM値を示した変換例が含まれています。また、Laravel、WordPress、SilverStripeとの統合についても言及しています。このプロジェクトはMITライセンスで、Spatieによってメンテナンスされています。