働きたくないゆとりの備忘録

プログラミングとかサーバーとか学んだことをいろいろ書いていきたい。。。

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

スポンサーリンク

ブログやWebサービスをやってく上で問題となるのが画像の容量です。

そのままアップロードしていると無駄に転送量が増えたり、ブラウザの表示が遅くなる原因になります。

最近はJPEGminiなどのWebサービスがあり大変便利ですが、大量に画像があると非常に手間がかかります。

となると自前でやるしかないわけですが、そもそも画像圧縮サービスはどうやって容量削減しているのかを調べてみると、Compressor.ioというWebサービスがJpegoptimというソフトを使用していることが分かりました。

実際使用してみて結構良かったので、Jpegoptimのインストール方法と使い方をまとめてみます。

Jpegoptimをインストール

使用したOS

CentOS 7.0


まずはJpegoptimのRPMパッケージを作成するためにrpmbuildをインストールします。

yum install rpm-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/SPECS


Jpegoptim本体をダウンロード。

wget http://www.kokkonen.net/tjko/src/jpegoptim-1.4.1.tar.gz -P ~/rpmbuild/SOURCES


コンパイラがインストールされていない場合はRPMパッケージ作成前にインストールしておく。

yum install gcc


Jpegoptimに必要なlibjpegをダウンロード。

wget http://www.ijg.org/files/jpegsrc.v9a.tar.gz


libjpegをインストール。

tar xzvf jpegsrc.v9a.tar.gz
cd jpeg-9a
./configure
make
make install


JpegoptimのRPMパッケージを作成。

rpmbuild -ba ~/rpmbuild/SPECS/jpegoptim.spec


Jpegoptimがlibjpegを読み込めるようにシンボリックリンクを作成。

ln -s /usr/local/lib/libjpeg.so.9.1.0 /usr/lib64/libjpeg.so.9


作ったRPMパッケージを使いJpegoptimをインストール。

rpm -ivh --nodeps ~/rpmbuild/RPMS/x86_64/jpegoptim-1.4.1-1.x86_64.rpm


次のコマンドを入力してバージョン情報が出力されればインストールは完了です。

jpegoptim -V

Jpegoptimを使ってみる

Jpegoptimは下記のように入力していきます。

jpegoptim オプション ファイル名
画像に含まれる情報を削除する

JPG画像が持っているExifやコメントなどのデータを削除し、無劣化で容量を削減します。

全てのデータを削除する場合は--strip-allを付けて実行します。

jpegoptim --strip-all ファイル名


個別に削除したい場合は次のようにします。

・コメントのみ
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品質 ファイル名
サイズを指定して圧縮

画像をKB単位で指定して、そのサイズまで圧縮します。
指定したサイズによって画質が劣化していきます。
また、数字の後に%を付けることで圧縮率を指定することもできます。

jpegoptim -Sサイズ ファイル名
保存ディレクトリを指定

通常は上書きされてしまうため、保存場所を指定することで上書きを防ぐことができます。

jpegoptim --dest=ディレクトリパス ファイル名
その他のオプション

指定した圧縮率より圧縮された場合は処理をスキップ(圧縮率は1~99を入力)

jpegoptim -T圧縮率 ファイル名


平均圧縮率と合計圧縮量を出力

jpegoptim -t ファイル名


処理結果を出力しない

jpegoptim -q ファイル名


同名ファイルが存在しても上書き

jpegoptim -o ファイル名


間違っている情報があればコメントいただけると幸いです。