Jpegの品質は指定できても、サブサンプリング因子(4:4:4や4:2:0など)まで指定できるアプリケーションは多くありません。
そこでアプリケーションやエンコーダごとに、デフォルトでサブサンプリングと、ついでにインターレースがどう決められるか調査しました。
結論
サブサンプリングについてパラメータを省略すると、エンコーダの挙動は次のようになりました。
入力ファイルによる違いはなく、同様の結果が得られました。
- Photoshop
- 品質
50まで4:2:0、品質51から4:4:4 - インターレース
なし - サブサンプリング因子は指定不可・
プログレッシブは指定可(最適化との併用不可)
- 品質
- ImageMagick
- 品質
89まで4:2:0、品質90から4:4:4 - インターレース
なし -
-sampling-factorと-interlaceオプションで指定可(convertコマンド)
- 品質
- MozJPEG
- 品質に関わらず
4:2:0 - インターレース
なし -
-sampleと-progressiveオプションで指定可(cjpegコマンド)
- 品質に関わらず
- Guetzli
- 品質に関わらず
4:4:4 - インターレース
なし - サブサンプリング因子・インターレースともに指定不可のよう(
guetzliコマンドのヘルプに見当たらず)
- 品質に関わらず
MozJPEGはプログレッシブになる気がしていましたが、勘違いだったようです。
元画像
元画像はいくつか用意しました。画像の質や解像度による変化があるかもと思ったからです。
写真はぱくたそさんから拝借して正方形にトリミングしました。
ノイズは1ピクセルごとにランダムな色が並ぶものです。画像圧縮が最も嫌がりそうなエントロピーの大きいデータです。一方、フラットは白一色の画像で、モザイクはその中間の30ピクセル四方のランダムな色の並びです。
480x480
| 写真 | ノイズ | モザイク | フラット |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
解像度のバリエーション
| 1000x1000 | 2000x2000 |
|---|---|
![]() |
![]() |
変換処理
品質Q(0〜100)を変数に元ファイルSRCから変換先JpegファイルDEST変換を行います。作業はmacOSで行いました。
- Photoshop
- CC 2018 (19.0)
-
Web用に保存(従来)機能を利用 - オプションは最適化あり・プログレッシブなし(最適化との併用不可)
- こちらの記事を参考にJSXを作成
- ImageMagick
- 7.0.8-14 (Homebrew)
convert -quality Q SRC DEST
- MozJPEG
- 3.3.1 (Homebrew)
- PNG入力に対応していないのでTGAを経由
convert SRC SRC.tga cjpeg -quality Q -targa SRC.tga DEST
- Guetzli
- 1.0.1 (Homebrew)
- Q=84〜100
guetzli --quality Q SRC DEST





