LoginSignup
70
63

More than 5 years have passed since last update.

jpegのロスレス圧縮

Last updated at Posted at 2014-02-12

(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

70
63
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
70
63