LinuxコマンドでjpegoptimでJPG画像を圧縮します。
個人的に、ローカルでの画像圧縮処理でjpegoptimはとても優秀で、画質劣化を最小限にして、大幅に画像容量を圧縮することができます。
実行する環境はUbuntu 20.04、jpegoptim 1.4.6です。
基本的に、以下のようにオプションと画像名を指定してコマンドを実行します。
オプション「–strip-all」を付けることで、画像が持ってる位置情報やコメントを削除します。この場合、画質はそのままです。
ちなみに処理後に容量が大きくなる場合は、圧縮処理はスキップされます。
$ jpegoptim --strip-all sample.jpg
オプションに品質「–max=1~99」を指定することで、画像劣化を伴った画像圧縮を実行できます。
個人的な感想ですが、品質80ぐらいでも十分容量を抑えることができます。品質40ぐらいから画像劣化が目立ちはじめます。
$ jpegoptim --max=80 sample.jpg
画像にもよりますが、ご参考までに、上のコマンドで品質80で容量を75%削減、品質40で容量を85%削減することができました。
逆に容量を指定して圧縮することもできます。オプション「–size=400」で400KBに圧縮、また、オプション「–size=50%」で容量を半分に圧縮することができます。
$ jpegoptim --size=400 sample.jpg $ jpegoptim --size=50% sample.jpg
ここまでは、画像ファイルは上書き保存されますが、以下のように出力するディレクトリ「compressed」を指定することで、別ディレクトリに圧縮後のファイルを出力することができます。
$ jpegoptim --strip-all --dest=./compressed sample.jpg
オプション「–noaction」を付けると、圧縮した場合にどうなるか?の情報だけ出力して、実際にファイルは処理されません。
$ jpegoptim --strip-all --noaction sample.jpg
ワイルドカードなどを使い複数画像をまとめて処理する場合、オプション「–totals」を付けることで、合計でどれだけ圧縮できたか、情報が出力されます。
$ jpegoptim --strip-all --totals *.jpg
オプション「–quiet」で、結果を一切出力しません。
$ jpegoptim --strip-all --quiet sample.jpg
また、これらオプションは短縮できます。その他オプションも含め「–help」で確認できます。
$ jpegoptim --help
一括圧縮処理
例えばフォルダ「img」の中に、複雑なディレクトリ構造の中のjpg画像をまとめて処理したい場合、findコマンドと合わせて、一括圧縮処理を実行することができます。
$ find img -type f -iname *.jpg -print | xargs jpegoptim --strip-all
コメントする