web-dev-qa-db-ja.com

jpegoptim vs jpegtran vs mozjpeg

私はこの問題に関して2つのわずかに矛盾するブログ投稿を見つけました、ここに要約します:

混乱に加えて、これ Redditスレッド は、mozjpegがjpegcrushで使用されているのと同じアルゴリズムを使用し、jpegcrushがjpegtranのラッパーであることを示唆しています...私はそれらのRedditコメントが間違っていると推測することしかできません、誰かがそれを確認できますか?

14
dvtan

MozJPEGライブラリは、jpegcrush(最適化されたプログレッシブスキャン)に触発された1つのアルゴリズムを使用しますが、技術的には完全に新しい実装です。

MozJPEGライブラリは、人気のあるlibjpegのドロップイン代替品であるため、ほとんどすべてのJPEG関連ツールを「通常」および「MozJPEG」フレーバーでコンパイルできます。

「通常の」jpegtranとMozJPEGバージョンのjpegtranが存在します。これは同じプログラムですが、MozJPEGバージョンには異なるデフォルト設定があり、圧縮を改善するために追加の作業を実行します。

同様に、jpegoptimは通常ストックlibjpegでビルドされますが、MozJPEGバージョンのlibjpegでビルドすることもできます(例: ImageOptim それを行います)。


MozJPEGを使用する方法は2つあります。

  1. ロスレス(既存のJPEGファイルを取得して少し小さくします)。それがMozJPEGのjpegtranが行うことです。
  2. 非可逆(非圧縮ピクセルから、より高い品質/ファイルサイズ比で新しいJPEGファイルを作成します)。これがMozJPEGのcjpegの機能であり、jpegoptimのような他のツールをMozJPEGで実行することができます。

どちらの動作モードも、Vanillaの最適化されていないlibjpegよりも低速です。ロスレス最適化は作業量が少なくなりますが、ゲインも小さくなります。

より正確な速度分析はここにあります: https://libjpeg-turbo.org/About/Mozjpeg

ここでの「遅い」は相対的なものであることに注意してください。絶対的には、1秒あたり数メガピクセルを圧縮するため、ほとんどのアプリケーションで十分な速度である可能性があります。

5
Kornel