jpegoptim 備忘録

Environment
Photo by hyt.

jpegoptim って何?

この blog やら何やらでで使う写真の減量と Exif 情報の削除のためにいつも Web サービス

Compressor.io - optimize and compress JPEG photos and PNG images
Optimize and compress your jpeg and png images online. Compressor is a lossy and lossless photo compression tool.

を有り難く使わせてもらっていたのですが,複数の写真をまとめて処理するのが面倒になってきました.で,何か良いツールがないか調べてみると,

Jpegoptimを導入してJPG画像の容量を圧縮する
ブログやWebサービスをやってく上で問題となるのが画像の容量です。そのままアップロードしていると無駄に転送量が増えたり、ブラウザの表示が遅くなる原因になります。最近はJPEGminiなどのWebサービスがあり大変便利ですが、大量に画像がある

で,jpegoptim というコマンドラインツールがまさにいままで使っていた Web サービスの裏で動いているものだと書いてあるではありませんか.確かに,見つけにくいのですが,ここ を見るときちんと書いてあります.

ということで,いつも使っている MacOS と Windows に入れてみました.

MacOS に入れる

MacOS 用の Homebrew を使っているのでコマンド一発で入ります.

$ brew install jpegoptim

とするだけです.

Cygwin on Windows に入れる

残念ながらコマンド一発とはいきません.ソースコードからコンパイルします.まず,元ページは

Timo Kokkonen - Projects

です.まず,以下のどちらかで 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 でマニュアルが表示されるはずです.また,上で紹介した

Jpegoptimを導入してJPG画像の容量を圧縮する
ブログやWebサービスをやってく上で問題となるのが画像の容量です。そのままアップロードしていると無駄に転送量が増えたり、ブラウザの表示が遅くなる原因になります。最近はJPEGminiなどのWebサービスがあり大変便利ですが、大量に画像がある

にも,使い方が紹介されていますが,改めてよく考えてみると,blog なんかに載せる写真の場合,減量と Exif 除去だけでなくて,リサイズが必要なことが多い.しかし,jpegoptim はリサイズには対応しないので,これが可能なものだと,結局 ImageMagick

ImageMagick
Create, Edit, Compose, or Convert Digital Images

に行きつきます.で,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 使う必要無いです.無理やり使っているだけです.でも,コピペして使うのでこれで良し!

Environment
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました