jpegoptim って何?
この blog やら何やらでで使う写真の減量と Exif 情報の削除のためにいつも Web サービス
を有り難く使わせてもらっていたのですが,複数の写真をまとめて処理するのが面倒になってきました.で,何か良いツールがないか調べてみると,
で,jpegoptim というコマンドラインツールがまさにいままで使っていた Web サービスの裏で動いているものだと書いてあるではありませんか.確かに,見つけにくいのですが,ここ を見るときちんと書いてあります.
ということで,いつも使っている MacOS と Windows に入れてみました.
MacOS に入れる
MacOS 用の Homebrew を使っているのでコマンド一発で入ります.
$ brew install jpegoptim
とするだけです.
Cygwin on Windows に入れる
残念ながらコマンド一発とはいきません.ソースコードからコンパイルします.まず,元ページは
です.まず,以下のどちらかで jpegoptim のソースコードを取得します.
$ git clone https://github.com/tjko/jpegoptim $ wget http://www.kokkonen.net/tjko/src/jpegoptim-1.4.4.tar.gz
個人的には git の方が好みです.実際にコンパイルするには libjpeg が必要です.Cygwin のパッケージだと libjpeg-devel ですね.入っていない場合は Cygwin の setup.exe (パッケージマネージャー)からインストールしておきます.
あとはいつもの通り
# wget 等で jpegoptim-1.4.4.tar.gz を取ってきた場合 $ tar -zxvf jpegoptim-1.4.4.tar.gz $ cd jpegoptim-1.4.4 $ ./configure $ make $ make strip $ make install # git でソースコードを取得した場合 $ cd jpegoptim $ ./configure $ make $ make strip $ make install
これで
/usr/local/bin/jpegoptim.exe /usr/local/share/man/man1/jpegoptim.1
の2ファイルが追加されます.うん,必要最低限ですね.
でも使い道に困る?
追加されるファイルを見て分かる通り,man jpegoptim でマニュアルが表示されるはずです.また,上で紹介した
にも,使い方が紹介されていますが,改めてよく考えてみると,blog なんかに載せる写真の場合,減量と Exif 除去だけでなくて,リサイズが必要なことが多い.しかし,jpegoptim はリサイズには対応しないので,これが可能なものだと,結局 ImageMagick
に行きつきます.で,ImageMagick はそれこそなんでも出来るので,ある意味,jpegoptim の上位互換です.オプションが多すぎて使い方がよくわからないコマンドではありますが,Homebrew でも Cygwin でも標準パッケージにも含まれています.まぁ,MacOS の場合は sips コマンドが初めから使えますので,jpegoptim さえ入れれば用は足りるのですが,Windows + Cygwin の場合はどう考えても ImageMagick を入れた方が早い.
なお,ImageMagick と jpegoptim の減量,Exif 除去に伴うファイルサイズの優劣は写真によりけりのようです.試しに,lossless と lossy (quality 80, 90) の両方を色々な写真で試してみましたが私には全く法則が分からないし,気にするほどの差でもありません.
で,結局結論は以下の通りとなりました.
結論
jpegoptim の –dest オプションはなかなか便利で,例えば
$ jpegoptim *.jpg --dest=tmp --strip-all
とすると,カレントディレクトリにある全ての jpeg ファイルから全ての Exif 情報を除去し,tmp フォルダの中に元と同じファイル名で処理済みファイルを保存してくれます.要するに元のファイルを残したままにできる.もちろん,スクリプトで何とでもなりますが1行で済むのが良い.同じことを ImageMagick 単体では出来ない(少なくとも私にはわからない).
ということで,リサイズが必要ない場合は,
$ mkdir jpgrddir; jpegoptim *.jpg --dest=jpgrddir --strip-all -m90
のように処理して,リサイズが必要な場合は,
$ mkdir jpgrddir; jpegoptim *.jpg --dest=jpgrddir --strip-all; mogrify -verbose -resize 1024x -quality 90 jpgrddir/*.jpg
とする(横 1024px で縦横比を保つ前提).
はい,前半はともかくとして,後半は,jpegoptim 使う必要無いです.無理やり使っているだけです.でも,コピペして使うのでこれで良し!