Jpegoptimを導入してJPG画像の容量を圧縮する

ブログやWebサービスをやってく上で問題となるのが画像の容量です。
そのままアップロードしていると無駄に転送量が増えたり、ブラウザの表示が遅くなる原因になります。
最近はJPEGminiなどのWebサービスがあり大変便利ですが、大量に画像があると非常に手間がかかります。
となると自前でやるしかないわけですが、そもそも画像圧縮サービスはどうやって容量削減しているのかを調べてみると、Compressor.ioというWebサービスがJpegoptimというソフトを使用していることが分かりました。
実際使用してみて結構良かったので、Jpegoptimのインストール方法と使い方をまとめてみます。
ちなみに、Jpegoptim以外の画像最適化ツールに関する記事も書いているのでよかったらどうぞ。
- jpegtranのインストール方法と使い方【JPG画像最適化】
- Google製JPEGエンコーダー「Guetzli」のインストール方法と使い方
- Mozilla製JPEGエンコーダー「MozJPEG」のインストール方法と使い方
- pngquantのインストール方法と使い方【PNG画像圧縮】
- OptiPNGのインストール方法と使い方【PNG画像圧縮】
- JPG・PNG・GIFなどの画像容量を圧縮できるWEBサービスまとめ
Jpegoptimをインストール
使用したOS
[root@localhost ~]# cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core)
インストール手順
まずはJpegoptimのRPMパッケージを作成するためにrpmbuildをインストールします。
yum installrpm-build続いて、rpmbuildの作業ディレクトリを作成。
mkdir-p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
RPMパッケージ作成に必要なspecファイルをダウンロードする。
wget https://raw.githubusercontent.com/tjko/jpegoptim/master/redhat/jpegoptim.spec-P ~/rpmbuild/SPECSJpegoptim本体をダウンロード。
記事更新時点での最新バージョンは1.4.6です。
wget https://www.kokkonen.net/tjko/src/jpegoptim-1.4.6.tar.gz-P ~/rpmbuild/SOURCESコンパイラとlibtoolがインストールされていない場合はインストールしておく。
yum install gccyum install libtool
Jpegoptimに必要なlibjpegをダウンロード。
記事更新時点での最新バージョンは9cです。
ですが、Jpegoptimは旧バージョンの6bでないと動かないので注意してください。
wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
もし、下記のようなエラーが出るときはlibjpegのバージョンが間違っているのでインストールし直してください。
Wrong JPEG library version: library is 62, caller expects 90
libjpegをインストール。
バージョン6bはconfigureする際に–enable-sharedオプションを付けないと共有ライブラリが作成されません。
さらに、makeとmake installの際にLIBTOOL=libtoolをつけてlibtoolを使わせるようにします。
tar xzvf jpegsrc.v6b.tar.gzcd jpeg-6b./configure --enable-sharedmake LIBTOOL=libtoolmkdir -p /usr/local/man/man1make install LIBTOOL=libtoolJpegoptimのRPMパッケージを作成。
rpmbuild-ba ~/rpmbuild/SPECS/jpegoptim.specJpegoptimがlibjpegを読み込めるようにシンボリックリンクを作成。
ln-s /usr/local/lib/libjpeg.so.62 /usr/lib64/libjpeg.so.62
作ったRPMパッケージを使いJpegoptimをインストール。
rpm-ivh--nodeps ~/rpmbuild/RPMS/x86_64/jpegoptim-1.4.6-1.x86_64.rpm
コマンドを入力してバージョン情報が出力されればインストールは完了です。
[root@localhost jpeg-6b]# jpegoptim -Vjpegoptim v1.4.6 x86_64-unknown-linux-gnu
Jpegoptimを使ってみる
Jpegoptimは下記のように入力していきます。
jpegoptim オプション ファイル名
画像に含まれる情報を削除する
JPG画像が持っているExifやコメントなどのデータを削除し、無劣化で容量を削減します。
全てのデータを削除する場合は–strip-allを付けて実行します。
jpegoptim--strip-all ファイル名実行例
[root@localhost ~]# jpegoptim --strip-all /home/nao/デスクトップ/mba.jpg/home/nao/デスクトップ/mba.jpg 800x486 24bit N JFIF [OK] 50410 --> 50410 bytes (0.00%), skipped.
個別に削除したい場合は次のようにします。
・コメントのみjpegoptim--strip-com ファイル名・Exifのみjpegoptim--strip-exif ファイル名・IPTCのみjpegoptim--strip-iptc ファイル名・ICCプロファイルのみjpegoptim--strip-icc ファイル名・XMPのみjpegoptim--strip-xmp ファイル名
逆にデータを削除しない場合は–strip-noneを付けます。(デフォルトでデータ保持されるのでまず使いません)
jpegoptim--strip-none ファイル名品質を指定して圧縮
品質(クオリティ)を指定して画像を圧縮します。
指定した品質によって画質が劣化していきます。
品質は1~99の数字を入力してください。
jpegoptim-m品質 ファイル名またはjpegoptim --max=品質 ファイル名実行例 品質50
[root@localhost ~]# jpegoptim -m50 /home/nao/デスクトップ/mba.jpg/home/nao/デスクトップ/mba.jpg 800x486 24bit N JFIF [OK] 50410 --> 22044 bytes (56.27%), optimized.

実行例 品質1
[root@localhost ~]# jpegoptim -m1 /home/nao/デスクトップ/mba.jpg/home/nao/デスクトップ/mba.jpg 800x486 24bit N JFIF [OK] 50410 --> 3794 bytes (92.47%), optimized.

サイズを指定して圧縮
画像をKB単位で指定して、そのサイズまで圧縮します。
指定したサイズによって画質が劣化していきます。
また、数字の後に%を付けることで圧縮率を指定することもできます。
jpegoptim-Sサイズ ファイル名またはjpegoptim--size=サイズ ファイル名
実行例 40KB
[root@localhost ~]# jpegoptim -S40 /home/nao/デスクトップ/mba.jpg/home/nao/デスクトップ/mba.jpg 800x486 24bit N JFIF [OK] 50410 --> 41769 bytes (17.14%), optimized.

保存ディレクトリを指定
デフォルトは上書きされてしまうため、保存場所を指定することで上書きを防ぐことができます。
jpegoptim-d=ディレクトリパス ファイル名またはjpegoptim--dest=ディレクトリパス ファイル名
その他のオプション
指定したしきい値より圧縮された場合は処理をスキップ(圧縮率は1~99を入力)
jpegoptim-Tしきい値 ファイル名またはjpegoptim--threshold=しきい値 ファイル名
実行例
[root@localhost ~]# jpegoptim -S40 -T41 /home/nao/デスクトップ/mba.jpg/home/nao/デスクトップ/mba.jpg 800x486 24bit N JFIF [OK] 50410 --> 41769 bytes (17.14%), skipped.
圧縮結果が元よりも大きい場合でも処理を強制する
jpegoptim -f ファイル名またはjpegoptim --force ファイル名
実行したときの結果だけ表示して圧縮処理はしない
jpegoptim -n ファイル名またはjpegoptim --noaction ファイル名
平均圧縮率と合計圧縮量を出力
jpegoptim-t ファイル名またはjpegoptim --totals ファイル名実行例
[root@localhost ~]# jpegoptim -m70 -t /home/nao/デスクトップ/mba.jpg/home/nao/デスクトップ/mba.jpg 800x486 24bit N JFIF [OK] 50410 --> 29203 bytes (42.07%), optimized.Average compression (1 files): 42.07% (21k)
処理結果を出力しない
jpegoptim-q ファイル名またはjpegoptim --quiet ファイル名-dオプションを使用した時にディレクトリ先に同名ファイルが存在しても上書き
jpegoptim-o ファイル名またはjpegoptim--overwrite ファイル名
ファイルの変更時刻を保存する
jpegoptim -p ファイル名またはjpegoptim --preserve ファイル名
冗長モードを有効にする
jpegoptim -v ファイル名またはjpegoptim --verbose ファイル名
非プログレッシブで出力する
jpegoptim --all-normal ファイル名
プログレッシブで出力する
jpegoptim --all-progressive ファイル名
ヘルプを表示する
jpegoptim -hまたはjpegoptim --help
以上になります。
間違っている情報があればコメントいただけると幸いです。
関連記事
ソフトウェアGoogle製JPEGエンコーダー「Guetzli」のインストール方法と使い方
ソフトウェアMagpieRSSでInvalid characterエラーが出るときの対処法
ソフトウェアWindows7で特定のドライブ文字を使われないように予約しておく方法
ソフトウェアpngquantのインストール方法と使い方【PNG画像圧縮】
ソフトウェア
















