1. ホーム
  2. compression

[解決済み] Google Page Speedのロスレス画像圧縮はどのように機能するのですか?

2022-06-12 10:33:50

質問

Firebug/FirefoxでGoogleのPageSpeedプラグインを実行すると、画像が可逆圧縮できる場合が提案され、この小さい画像をダウンロードするためのリンクが提供されます。

たとえば

これは JPG と PNG の両方のファイルタイプで適用されます (GIF やその他のものはテストしていません)。

Flickr のサムネイル (これらの画像はすべて 75x75 ピクセルです。) にも注目してください。 もしこれが本当に素晴らしいものであるなら、なぜ Yahoo はこれをサーバー側でライブラリ全体に適用し、ストレージと帯域幅の負荷を軽減しないのでしょうか?

Stackoverflow.com でさえ、非常に小さな節約になっています。

Photoshop の「Web 用に保存」機能を使用して作成した PNG ファイルについて、PageSpeed がかなり適切な節約を提案しているのを見たことがあります。

そこで私の質問は、そんなに減らすために画像にどんな変更を加えているのか、ということです。 ファイル タイプによって異なる答えがあると思います。 これは本当に JPG のロスレスなのでしょうか? そして、どうしてフォトショップに勝てるのでしょうか? ちょっと疑ってかかったほうがいいでしょうか?

どうすれば解決するの?

もし本当に技術的な詳細に興味があるのなら、ソースコードをチェックしてください。


PNG ファイルについては、試行錯誤しながらも OptiPNG を使用しています。

// we use these four combinations because different images seem to benefit from
// different parameters and this combination of 4 seems to work best for a large
// set of PNGs from the web.
const PngCompressParams kPngCompressionParams[] = {
  PngCompressParams(PNG_ALL_FILTERS, Z_DEFAULT_STRATEGY),
  PngCompressParams(PNG_ALL_FILTERS, Z_FILTERED),
  PngCompressParams(PNG_FILTER_NONE, Z_DEFAULT_STRATEGY),
  PngCompressParams(PNG_FILTER_NONE, Z_FILTERED)
};

4つの組み合わせをすべて適用したとき、最も小さい結果が保持されます。という単純なものです。

(注意:このとき optipng コマンドラインツールは、もしあなたが -o 2 を通して -o 7 )


JPEGファイルの場合、彼らは jpeglib を以下のオプションで指定します。

 JpegCompressionOptions()
     : progressive(false), retain_color_profile(false),
       retain_exif_data(false), lossy(false) {}


同様に、WEBP は以下の方法で圧縮されます。 libwebp をこれらのオプションで指定します。

  WebpConfiguration()
      : lossless(true), quality(100), method(3), target_size(0),
        alpha_compression(0), alpha_filtering(1), alpha_quality(100) {}


また イメージコンバーター.cc という、最小のフォーマットに可逆変換するためのファイルもあります。