このパッケージは、さまざまな画像最適化ツールのチェーンを通じて PNG、JPG、WEBP、AVIF、SVG、GIF を実行してそれらを最適化できます。使用方法は次のとおりです。
SpatieImageOptimizerOptimizerChainFactory を使用します;$optimizerChain = OptimizerChainFactory::create();$optimizerChain->optimize($pathToImage);
$pathToImage
の画像は、より小さい最適化されたバージョンによって上書きされます。パッケージは、システムにインストールされている最適化バイナリを自動的に検出し、それらを使用します。
このパッケージによって行われた変換の例をいくつか示します。
Laravel が好きですか?次に、Laravel 固有の統合に進みます。
WordPress を使用していますか?次に、WP CLI コマンドを試してください。
シルバーストライプのファンですか?時間を無駄にせず、SilverStripe モジュールに進んでください。
私たちはクラス最高のオープンソース パッケージの作成に多くのリソースを投資しています。有料製品のいずれかを購入することで、私たちをサポートできます。
当社のどのパッケージを使用しているかについて、故郷から葉書を送っていただき、誠にありがとうございます。当社の住所は、お問い合わせページに記載されています。受け取ったすべてのポストカードをバーチャル ポストカード ウォールに公開します。
パッケージは、composer 経由でインストールできます。
コンポーザーには spatie/image-optimizer が必要です
これらのオプティマイザーがシステム上に存在する場合、パッケージはこれらのオプティマイザーを使用します。
JpegOptim
オプション
プンクアント 2
SVGO1
Gifsicle
クウェブ
アビフェンク
Ubuntu/Debian にすべてのオプティマイザーをインストールする方法は次のとおりです。
sudo apt-get インストール jpegoptim sudo apt-get install optipng sudo apt-get インストール pngquant sudo npm install -g svgo sudo apt-get インストールのGIF画像 sudo apt-get インストール webp sudo apt-get install libavif-bin # 最小 0.9.3
MacOS にバイナリをインストールする方法は次のとおりです (Homebrew を使用)。
醸造インストールjpegoptim 醸造インストールのオプション brew インストール pngquant npm インストール -g svgo 醸造インストールgifsicle 醸造インストールWebP 醸造インストールlibavif
Fedora/RHEL/CentOS にバイナリをインストールする方法は次のとおりです。
sudo dnf install epel-release sudo dnf インストール jpegoptim sudo dnf install optipng sudo dnf インストール pngquant sudo npm install -g svgo sudo dnf インストール gifsicle sudo dnf libwebp-tools をインストールします sudo dnf libavif-tools をインストールします
パッケージは、特定の画像に対してどのツールを使用するかを自動的に決定します。
JPG は、JpegOptim を介して実行すると小さくなります。次のオプションが使用されます。
-m85
: 画像を 85% の品質で保存します。この設定は Google の Pagespeed 圧縮ルールを満たしているようです
--strip-all
: コメントや EXIF データなどのすべてのテキスト情報を削除します。
--all-progressive
: これにより、結果として得られる画像がプログレッシブ画像であることが保証されます。つまり、段階的に詳細度が高くなる複数のパスを使用してダウンロードできることになります。
PNG は 2 つのツールで実行することで小さくなります。 1 つ目は Pngquant 2、非可逆 PNG 圧縮プログラムです。追加のオプションは設定せず、デフォルトが使用されます。その後、イメージを 2 番目の Optipng で実行します。次のオプションが使用されます。
-i0
: ノンインターレースのプログレッシブスキャン画像になります。
-o2
: 最適化レベルを 2 に設定します (複数の IDAT 圧縮トライアル)
SVG は SVGO によって縮小されます。 SVGO のデフォルト設定が使用されますが、 cleanupIDs
プラグインとremoveViewBox
プラグインは省略されます。これは、これらのプラグインは、1 ページに複数の最適化された SVG を表示するときに問題を引き起こすことが知られているためです。
SVGO は SVG を壊す可能性があることに注意してください。詳細については、Sara Soueidan によるこの素晴らしいブログ投稿をご覧ください。
GIF は Gifsicle によって最適化されます。これらのオプションが使用されます。
-O3
: 最適化レベルを Gifsicle の最大値に設定します。これにより、最も遅いですが最高の結果が得られます。
WEBP は Cwebp によって最適化されます。これらのオプションが使用されます。
-m 6
最適な圧縮を実現するための最も遅い圧縮方法です。
-pass 10
分析パスの量を最大化します。
-mt
マルチスレッド化により速度が向上します。
-q 90
最も目立たない変化をもたらす品質係数。
(設定はここから引用したオリジナルです)
AVIF は avifenc によって最適化されます。これらのオプションが使用されます。
-a cq-level=23
: 一定の品質レベル。値が小さいほど、品質が向上し、ファイル サイズが大きくなります (0 ~ 63)。
-j all
: ジョブの数 (ワーカー スレッド、 all
使用可能なすべてのコアを使用します)。
--min 0
: カラーの最小量子化器 (0 ~ 63)。
--max 63
: カラーの最大量子化器 (0 ~ 63)。
--minalpha 0
: アルファの最小量子化器 (0 ~ 63)。
--maxalpha 63
: アルファの最大量子化器 (0 ~ 63)。
-a end-usage=q
レート制御モードを定品質モードに設定します。
-a tune=ssim
: 歪みメトリックのエンコーダーを調整する SSIM。
(設定はこことここから取得したオリジナルです)
これはパッケージのデフォルトの使用方法です。
SpatieImageOptimizerOptimizerChainFactory を使用します;$optimizerChain = OptimizerChainFactory::create();$optimizerChain->optimize($pathToImage);
$pathToImage
の画像は、より小さい最適化されたバージョンによって上書きされます。
パッケージは、システムにインストールされている最適化バイナリを自動的に検出し、それらを使用します。
元のイメージを保持するには、2 番目の引数optimize
を渡すことができます。
SpatieImageOptimizerOptimizerChainFactory を使用します;$optimizerChain = OptimizerChainFactory::create();$optimizerChain->optimize($pathToImage, $pathToOutput);
この例では、パッケージは$pathToImage
には触れず、最適化されたバージョンを$pathToOutput
に書き込みます。
setTimeout
呼び出すことで、チェーン内の個々のオプティマイザーが使用できる最大時間を秒単位で設定できます。
$optimizerChain->setTimeout(10) ->最適化($pathToImage);
この例では、チェーン内の各オプティマイザーは、そのジョブを実行するために最大 10 秒かかります。
オプティマイザーのチェーンをカスタマイズしたい場合は、 Optimizer
をOptimizerChain
に手動で追加することで実行できます。
optipng
とjpegoptim
のみを使用する例を次に示します。
SpatieImageOptimizerOptimizerChain を使用;SpatieImageOptimizerOptimizersJpegoptim を使用;SpatieImageOptimizerOptimizersPngquant を使用;$optimizerChain = (新しい OptimizerChain) ->addOptimizer(new Jpegoptim([ '--strip-all', '--all-progressive', ])) ->addOptimizer(new Pngquant([ '--force', ]))
Optimizer
が使用するオプションをコンストラクターに渡すことができることに注意してください。
別のコマンド ライン ユーティリティを使用して画像を最適化したいですか?問題ない。独自のオプティマイザを作成するだけです。オプティマイザーは、 SpatieImageOptimizerOptimizersOptimizer
インターフェイスを実装するクラスです。
名前空間 SpatieImageOptimizerOptimizers;SpatieImageOptimizerImage を使用する;インターフェイス オプティマイザー {/** * 実行されるバイナリの名前を返します。 * * @return string */public function binaryName(): string;/** * 指定されたイメージがオプティマイザーで処理できるかどうかを判断します。 * * @param SpatieImageOptimizerImage $image * * @return bool */public function canHandle(Image $image): bool;/** * 最適化する必要がある画像へのパスを設定します。 * * @param string $imagePath * * @return $this */public function setImagePath(string $imagePath);/** * オプティマイザーが使用するオプションを設定します。 * * @param array $options * * @return $this */public function setOptions(array $options = []);/** * 実行するコマンドを取得します。 * * @return string */public function getCommand(): string; }
実装例を確認したい場合は、このパッケージに同梱されている既存のオプティマイザーを参照してください。
OptimizerChain
でaddOptimizer
メソッドを使用すると、オプティマイザを簡単に追加できます。
SpatieImageOptimizerImageOptimizerFactory を使用します;$optimizerChain = OptimizerChainFactory::create();$optimizerChain ->addOptimizer(新しいYourCustomOptimizer()) ->最適化($pathToImage);
デフォルトでは、パッケージはエラーをスローせず、ただ静かに動作します。パッケージが何を行っているかを確認するには、ロガーを設定できます。
SpatieImageOptimizerOptimizerChainFactory を使用します;$optimizerChain = OptimizerChainFactory::create();$optimizerChain ->useLogger(new MyLogger()) ->最適化($pathToImage);
ロガーは、 PsrLogLoggerInterface
を実装するクラスです。完全に準拠した優れたロギング ライブラリは Monolog です。パッケージは、使用されたOptimizers
、実行されたコマンド、およびその出力をログに書き込みます。
このパッケージによって実行される実際の変換例をいくつか示します。
JPG、WEBP、AVIF 画像の方法: 元の画像は spatie/image (デフォルトの GD ドライバーを使用) に供給され、2048 ピクセル幅にサイズ変更されます。
SpatieImageImage::load('original.jpg') ->幅(2048) ->保存('画像.jpg'); // 画像.png、画像.webp、画像.avif
オリジナル
771KB
最適化された
511 KB (-33.7%、DSSIM: 0.00052061)
クレジット: Jeff Sheldon、Unsplash より
オリジナル
461KB
最適化された
184 KB (-60.0%、DSSIM: 0.00166036)
クレジット: Jeff Sheldon、Unsplash より
オリジナル
725KB
最適化された
194 KB (-73.2%、DSSIM: 0.00163751)
クレジット: Jeff Sheldon、Unsplash より
オリジナル: Photoshop 'Web 用に保存' |透過PNG-24
39KB
最適化された
16 KB (-59%、DSSIM: 0.00000251)
原作:イラストレーター | Web に最適化された SVG エクスポート
25KB
最適化された
20 KB (-21.5%)
最近の変更点の詳細については、CHANGELOG を参照してください。
作曲家テスト
詳細については、「貢献」を参照してください。
セキュリティに関するバグを見つけた場合は、問題トラッカーを使用する代わりに [email protected] にメールを送信してください。
このパッケージは自由に使用できます (MIT ライセンスが付与されています) が、実稼働環境に導入できた場合は、どのパッケージを使用しているかを記載したポストカードを故郷から送っていただければ幸いです。
私たちの住所は、Spatie, Kruikstraat 22, 2018 Antwerp, Belgiumです。
いただいたはがきはすべて当社ホームページに掲載しております。
フリーク・ファン・デル・ヘルテン
すべての貢献者
このパッケージは psliwa/image-optimizer からインスピレーションを得ています。
Joke Forment による精神的サポート
MIT ライセンス (MIT)。詳細については、ライセンス ファイルを参照してください。