CompressDog

画質を落とさずに JPEG のファイルサイズを小さくする方法

大事なディテールを残したまま JPEG を軽くする実践的な手順と、ほとんどのオンラインツールが間違えているエンコーダ設定について解説します。

「画像を圧縮」するツールのほとんどは、同じ黙った取引をしています。色情報の半分を捨てて、気づかれないことを願っているのです。肌の色、赤い花、細い色文字、色の境界が強い写真で結果が見えます。画質スライダーでは直りません。これは画質の問題ではないからです。

JPEG を大きくしているものの正体

JPEG は明るさをフル解像度で、色を低い解像度で保存します。この比率をクロマサブサンプリングと呼びます。

多くのカメラや画像生成ツールは 4:4:4 で書き出します。ところが多くのエンコーダは、「Web 用」「圧縮」の JPEG を求められると黙って 4:2:0 に変換します。この変換は不可逆です。画質スライダーが関与する前に、色のディテールはすでに捨てられています。

323 枚の画像で計測しました。同じ画質のままサンプリングだけを 4:4:4 から 4:2:0 に変えると、SSIMULACRA2 の平均が 87.8 から 82.7 へ低下 —— 1 枚も例外なく悪化し、47% は 5 ポイント以上、最悪の 1 枚は 17 ポイント下がりました。JPEG の画質を上げても回復しません。

画質の数値はパーセントではない

JPEG の画質 80 は「元の 80%」という意味ではありません。1992 年に定義された量子化ステップ表へのインデックスで、物理的な意味はありません。どちらも画質 80 と名乗る 2 つのエンコーダが、同じ見た目の画質でファイルサイズが 40% 違うこともあります。

写真コンテンツの実用的な範囲:

このツールが違うところ

私たちはファイルに触る前にヘッダーからクロマサブサンプリングを読み取り、そのまま維持します。4:4:4 の画像は 4:4:4 のままです。ほとんどのツールはあなたのファイルが何を使っていたか教えてくれません。私たちは圧縮前にすべての画像で表示します。

また、画質を無駄に使いません。すでに圧縮されたファイル(たとえば以前 q70 で書き出したもの)を q80 で再エンコードすると、見た目は良くならないのにファイルは大きくなります。エンコーダが前回の圧縮の痕跡を記述するためにビットを使うからです。その場合は推測せず可逆パスを実行します。エントロピー符号化を書き直し、画像データはビット単位で同一のままです。ベースライン JPEG では通常 4% ほど小さくなります。

うまくいく手順

すべてブラウザ内で動作します。画像がアップロードされることはありません。

圧縮ツールを開く