web-dev-qa-db-ja.com

PHP:目に見える品質を失うことなく(自動的に)画像を圧縮する方法は?

最適な圧縮率(小さなファイルサイズ+品質の損失なし)を自動的に把握する方法を知りたいのですが。

現時点では、 imagejpeg() with $quality = 85.jpg

PageSpeed(Chromeプラグイン)は、数KBを節約するためにいくつかの画像の品質を下げることを提案しています。削減の割合は異なります。

特定のディレクトリをクロールし、すべてのイメージを最適化するcronjobを作成したいと思います。

PageSpeedまたは TinyPNG は、最適化された最適な品質をどのように把握しますか?PHPまたは別のサーバーサイド言語で可能ですか?

18
Mr. B.

TinyPNGは pngquant を使用します。

Pngquantには、JPEGと同様に、必要な品質を設定するオプションがあります。次のようなものを実行できます。

<?php system('pngquant --quality=85 image.png'); ?>

Pngquant Webサイトには、PHPからpngquantを使用する方法を示すサンプルコードがあります


JPEGの場合、losslessjpegcrush を適用できます。

JpegMini (商用)および jpeg-archive (無料)はlossyであり、自動的に検索できますJPEGの最低限の良質。

PHP再圧縮後のファイルサイズの変化を観察することで、JPEGがどれだけ圧縮されたかを概算できます。同じまたはより高い品質で再圧縮されたJPEGのファイルサイズはあまり変化しません視覚品質)。

JPEGを再圧縮し、ファイルサイズが半分になった場合は、再圧縮バージョンを保持します。ファイルサイズが10〜20%しか低下しない場合は、元のサイズのままにしてください。

自分で圧縮する場合は、 MozJPEG (ここでは オンラインバージョン )を使用します。

28
Kornel