JPEG 画像を無劣化で容量を減らす jhead, jpegoptim

JPEG 画像は画像編集ソフトで編集したり、カメラに寄っては exif 情報を持たせたりしていて、それはそれで便利だったりするのだけど、必要がないなら削除して 1byte でも節約しておきたい所です。

特に web 素材なら少しでも小さいサイズにしておきたい。

Windows では JPG Cleaner をつかってまとめて掃除していましたが、mac で使うのにコマンドラインツールは無いかと探したところ、jhead と jpegoptimというソフトが見つかりました。

インストール

どちらも brew install jhead / brew install jpegoptim でインストールできました。

brew を使っていない人は ソースか mac port (では確認してません) など適宜インストールしてください。

jhead

jhead はヘッダの編集もできるようですが、今回は掃除をしたいだけなので、その機能だけ使ってみました。

掃除の前に、jpeg 画像の情報を見てみましょう。

$ jhead dummy.jpg
File name : dummy.jpg
File size : 5285 bytes
File date : 2012:11:01 09:57:38
Resolution : 240 x 160
Comment : CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 65

http://placekitten.com/240/160 をダウンロードした画像で試します。

Comment という項目に、変換情報がふくまれていました。これには含まれていませんが、デジカメなどで取った写真には他にもいろいろな情報が付加されている可能性があるでしょう。

これを除去します。

$ jhead -purejpg dummy.jpg
$ jhead dummy.jpg
File name : dummy.jpg
File size : 5224 bytes
File date : 2012:11:01 09:57:38
Resolution : 240 x 160

コメントの部分が削除され、File Size も微々たる程度ですが削減できました。

コメントや exif 情報など画質に無関係な情報を処理するので、劣化はしませんが、元のファイルを変更してしまう(オリジナルを残すオプションがたぶん無い)ので、バックアップは取りましょう。

jpegoptim

jpegoptim は最適化によるサイズ縮小を行うことができます。画像にも寄りますが、数パーセントは軽くなるのでオススメです。

説明によると最適化によって劣化することはないそうですが、ただコメントを除去したい場合は jhead を使った方がよいでしょう。

$ jpegoptim --strip-all dummy.jpg 
$ jhead dummy.jpg
dummy.jpg 240x160 24bit JFIF  [OK] 5285 --> 4832 bytes (8.57%), optimized.
File name : dummy.jpg
File size : 4832 bytes
File date : 2012:11:01 10:04:31
Resolution : 240 x 160

内容を確認するのに jhead を使いました。

jpegoptim に引数で渡すだけで最適化してくれます。さらに –strip-all オプションでコメント/exifの除去を行っています。

こちらもオリジナルを保持するオプションが無かったので、最適化前にバックアップした方が良いでしょう。

今回は画像情報以外全て削除しましたが、コメントだけ/EXIFだけ/ICCプロファイルだけなどのオプションもあったので、適宜使い分けることもできます。

Web で公開するにあたって意図しないコメントが含まれているのはすこし気持ち悪いですし、どうせ利用されない情報なら削除して、少しでもネットのトラフィックを減らすとみんなが幸せになれる気がします。

横着さん向け、ディレクトリ以下の jpg を一括クリーンスニペット

find . -type f -name "*.jpg" -exec jhead -purejpg {} \;
find . -type f -name "*.jpg" -exec jpegoptim --strip-all {} \;

シェアする

  • このエントリーをはてなブックマークに追加

フォローする