(2014/02/25 追記)
便宜上「jpgのロスレス圧縮」とタイトルを付けましたが、jpegの場合ではロスレス圧縮ではなく、画像の最適化をする方法になります。
(2014/02/25 追記ここまで)
Googleが提供しているPageSpeed Insightsでwebページの計測をしてみたら
「画像を最適化する」の項目でjpegファイルのロスレス圧縮を要求されたのでメモ
ロスレス圧縮とは
可逆圧縮(かぎゃくあっしゅく)とは、圧縮前のデータと、圧縮・展開の処理を経たデータが完全に等しくなるデータ圧縮方法のこと。ロスレス圧縮とも呼ばれる。
http://ja.wikipedia.org/wiki/可逆圧縮
とのこと。
jpegのロスレス圧縮とは
- jpegファイルは非可逆圧縮と呼ばれる圧縮すればするほど画質が悪くなる形式。
- jpegファイルには撮影情報等のメタデータが記述される事があるので、メタデータを取り除けばファイルサイズを小さく出来ることがある。
- 圧縮に使用するハフマンテーブルを最適化すると圧縮率を改善できる
jpegは圧縮すると画質が悪くなるが、メタデータの削除やハフマンテーブルの最適化でサイズを縮小する事が出来る事もある。
ロスレス圧縮する
jpegtran
コマンドを使う。
インストール
brew install jpeg
ちなみにfreeBSD(OS X)では標準で入ってるみたい。
実行
jpegtran -copy none -optimize -outfile /path/to/foo.jpg /path/to/foo.jpg
- -copy none
- JPEG ファイルのメタデータをすべて削除する。
- -optimize
- ハフマンテーブルを最適化する。
- -outfile
- ファイルの出力先の指定
まとめて圧縮
find /path/to/public/ -name "*.jpg" -type f -exec jpegtran -copy none -optimize -outfile {} {} \;
参考 :
- http://www.maruko2.com/mw/Webで使用する画像ファイルの最適化#JPEG
- http://stackoverflow.com/questions/12831293/how-to-recursivly-use-jpegtran-command-line-to-optimise-all-files-in-subdirs