[解決済み] Google Page Speedのロスレス画像圧縮はどのように機能するのですか?
質問
Firebug/FirefoxでGoogleのPageSpeedプラグインを実行すると、画像が可逆圧縮できる場合が提案され、この小さい画像をダウンロードするためのリンクが提供されます。
たとえば
- 可逆圧縮 http://farm3.static.flickr.com/2667/4096993475_80359a672b_s.jpg は 33.5KiB (85% 減) を節約することができました。
- 可逆圧縮 http://farm2.static.flickr.com/1149/5137875594_28d0e287fb_s.jpg は 18.5KiB (77% 減) を節約することができました。
- 可逆圧縮 http://cdn.uservoice.com/images/widgets/en/feedback_tab_white.png は 262B (11% 減) を節約することができました。
- ロスレス圧縮 http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/images/ui-bg_flat_75_ffffff_40x100.png を使用すると、91B (51% 減) を節約できます。
- ロスレス圧縮 http://www.gravatar.com/avatar/0b1bccebcd4c3c38cb5be805df5e4d42?s=45&d=mm を使用すると、61B を節約できます (5% の削減)。
これは JPG と PNG の両方のファイルタイプで適用されます (GIF やその他のものはテストしていません)。
Flickr のサムネイル (これらの画像はすべて 75x75 ピクセルです。) にも注目してください。 もしこれが本当に素晴らしいものであるなら、なぜ Yahoo はこれをサーバー側でライブラリ全体に適用し、ストレージと帯域幅の負荷を軽減しないのでしょうか?
Stackoverflow.com でさえ、非常に小さな節約になっています。
- 可逆圧縮 http://sstatic.net/stackoverflow/img/sprites.png?v=3 は 1.7KiB (10% 減) を節約することができました。
- 可逆圧縮 http://sstatic.net/stackoverflow/img/tag-chrome.png は 11B (1% 減) を節約することができました。
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 という、最小のフォーマットに可逆変換するためのファイルもあります。
関連
-
[解決済み] 7zip 不正なコマンドラインエラー?
-
[解決済み] あらゆるサイズの圧縮をテストするための大きなテキストファイルを探しています。
-
[解決済み] .zstやtar.zstを持つアーカイブファイルを解凍するにはどうすればよいですか?[クローズド]
-
[解決済み】zlib、gzip、zipはどのように関係していますか?これらの共通点と相違点は何ですか?
-
[解決済み】tar.xzを1つのコマンドで作成する方法
-
[解決済み】ファイルをzip/unzipするための良いJavaライブラリは何ですか?[クローズド]
-
[解決済み] Google Page Speedのロスレス画像圧縮はどのように機能するのですか?
-
[解決済み] Gzipとminifyの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 7zip 不正なコマンドラインエラー?
-
[解決済み] あらゆるサイズの圧縮をテストするための大きなテキストファイルを探しています。
-
[解決済み] .zstやtar.zstを持つアーカイブファイルを解凍するにはどうすればよいですか?[クローズド]
-
[解決済み】zlib、gzip、zipはどのように関係していますか?これらの共通点と相違点は何ですか?
-
[解決済み】tar.xzを1つのコマンドで作成する方法
-
[解決済み】ファイルをzip/unzipするための良いJavaライブラリは何ですか?[クローズド]
-
[解決済み] Google Page Speedのロスレス画像圧縮はどのように機能するのですか?
-
[解決済み] Gzipとminifyの比較