日記移転先(゜▽゜)

という名前の適当な日記ブログ


| Home | Index | Links | About |

Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

mozjpegを試す


量子化テーブルの続きも書いてたのだが先日mozjpegなんてのが出たのでそちらを試す。
丁度jpegの構造を調べてる時に出たもんだから素人ながらどう違うのかがまあ分かる(゜▽゜;
ニュースサイトとか色々みてると色々…面白かったりも(゜ω゜;

先に最適化されたjpegを覗いたのだが確かにIJGのjpegtranで最適化したより小さい。でもプログレッシブ(?_?;
んでmozjpeg自体はIJGのlibjpegのSIMD最適化な派生のlibjpeg-turboの派生品らしい。
落とすのはニュースサイトから直で即なのだが試す為の.exeファイル作成はえらく手間取った(;´Д`)
libjpegだとちょいと手を加えるだけでコンパイルできるのだが~-turboからcmake必須?になってるので…(;´Д`)
結局上手く生成されないのでCMakeLists.txtをてきとーに書き換えて通した。怪しいけどまあ出来たからいいやヽ(´ー`)ノ
D:\test\bin>jpegtran-static -hoge
usage: jpegtran-static [switches] [inputfile]
Switches (names may be abbreviated):
  -copy none     Copy no extra markers from source file
  -copy comments Copy only comment markers (default)
  -copy all      Copy all extra markers
  -optimize      Optimize Huffman table (smaller file, but slow compression, enabled by default)
  -progressive   Create progressive JPEG file (enabled by default)
  -revert        Revert to standard defaults (instead of mozjpeg defaults)
  -fastcrush     Disable progressive scan optimization
Switches for modifying the image:
  -crop WxH+X+Y  Crop to a rectangular subarea
  -grayscale     Reduce to grayscale (omit color data)
  -flip [horizontal|vertical]  Mirror image (left-right or top-bottom)
  -perfect       Fail if there is non-transformable edge blocks
  -rotate [90|180|270]         Rotate image (degrees clockwise)
  -transpose     Transpose image
  -transverse    Transverse transpose image
  -trim          Drop non-transformable edge blocks
Switches for advanced users:
  -arithmetic    Use arithmetic coding
  -restart N     Set restart interval in rows, or in blocks with B
  -maxmemory N   Maximum memory to use (in kbytes)
  -outfile name  Specify name for output file
  -verbose  or  -debug   Emit debug output
Switches for wizards:
  -scans file    Create multi-scan JPEG per script file
微妙にIJGともlibjpeg-turboとも違う。
小さいjpeg作成がウリの為か-optimize、-progressiveがデフォになってるのが大きな特徴かな。
プログレッシブでないjpegの作成は -revertを指定するようだが -fastcrushは-progressiveの最適化省略?。
汎用ハフマンテーブルの非最適化jpeg生成はどう指定すればいいんだろう…?(;´Д`)
実行してみるとlibjpeg-turbo派生だけに-revertは-optimizeでも速い(?)。-revert以外が遅いのが対照的(゜▽゜;


適当に試してみる。とりあえずMozilla関連で適当にサイズの大き目な画像を拾ってくる。

01 (ソース)
# switchs size %
- 元の画像 545,224 101.5%
9a 指定無し 540,990 100.7%
9a -optimize 536,923 100.0%
moz -revert 536,923 100.0%
moz -progressive512,706 95.4%
moz -fastcrush 513,794 95.7%

02 (ソース)
# switchs size %
- 元の画像 2,623,382 105.5%
9a 指定無し 2,519,895 101.3%
9a -optimize 2,485,725 100.0%
moz -revert 2,485,725 100.0%
moz -progressive2,389,165 96.1%
moz -fastcrush 2,406,350 96.8%

03 (ソース)
# switchs size %
- 元の画像 2,336,885 100.9%
9a 指定無し 2,329,013 100.6%
9a -optimize 2,314,474 100.0%
moz -revert 2,314,474 100.0%
moz -progressive2,219,502 95.9%
moz -fastcrush 2,233,277 96.5%


比較にlibjpeg最新の9aを使用。比もそれの-optimizeを100%としてます。
不要セグメント除去の-copy辺りはデフォのまま使用。
入手の容易なwin用日本語対応版だと6bだが6bの頃でも最適化は同じjpegを吐く筈(?)
んでmozjpeg。
非プログレッシブの-revertだと従来のjpegtranと全く同じサイズ…多分同じ。
つまりウリの「小さくなる」はプログレッシブjpeg限定ぽいΣ(゜д゜;ガーン
-fastcrushは何か省略してるらしいが生成されるのはプログレッシブです(;´Д`)
「10%小さく」ってあるけど昔からある最適化済からは5%前後?まあ可逆部分で更に5%は凄いのだが…ねぇ?
#10%でなく2~6%と書いてる所もあった.
#プログレッシブに触れてる所もあった.
#つかを読んだら一応書いてるじゃねえか(゜▽゜;;

更に適当に試す。

libjpeg付属のサンプル
# switchs size %
- 元の画像 5,770 105.6%
9a 指定無し 5,770 105.6%
9a -optimize 5,463 100.0%
moz -revert 5,463 100.0%
moz -progressive5,453 99.8%
moz -fastcrush 5,596 102.4%

適当に狸 (ソース)
# switchs size %
- 元の画像 3,095,055 104.5%
9a 指定無し 3,139,163 105.9%
9a -optimize 2,962,110 100.0%
moz -revert 2,962,110 100.0%
moz -progressive2,760,048 93.2%
moz -fastcrush 2,775,851 93.7%

適当に白黒画像
# switchs size %
- 元の画像 89,727 100.0%
9a 指定無し 92,442 103.0%
9a -optimize 89,727 100.0%
moz -revert 89,727 100.0%
moz -progressive84,487 94.1%
moz -fastcrush 84,755 94.4%



適当にコンデジ画像
# switchs size %
- 元の画像 930,869 103.9%
9a 指定無し 914,792 102.1%
9a -optimize 895,392 100.0%
moz -revert 895,392 100.0%
moz -progressive844,206 94.3%
moz -fastcrush 847,783 94.7%

適当に壁紙
# switchs size %
- 元の画像 656,050 128.2%
9a 指定無し 548,238 107.1%
9a -optimize 511,833 100.0%
moz -revert 511,833 100.0%
moz -progressive502,270 98.1%
moz -fastcrush 505,816 98.8%

適当にキャプ画像(ソース)
# switchs size %
- 元の画像 213,156 100.0%
9a 指定無し 221,600 103.9%
9a -optimize 213,156 100.0%
moz -revert 213,156 100.0%
moz -progressive203,824 95.6%
moz -fastcrush 203,886 95.6%


色々やって解るのは手作業でちまちまやってると辛い(゜д゜)
数値の入力ミスとかチェックしてないよ(゜д゜)

使って遊ぶなら複数のjpegtran用フロントエンドでも作りたい所。
不要セグメントの選択機能もつけると…面倒か(;´Д`)




--------
#r1:見直したらおかしい部分が多々あったので修正。font-size: gray;とか書き出す程ボケてるのでまだおかしいかも(;´Д`)
#r2:CSS調整ついでにちょいと修正。リンク追加。
#r3:CSS調整ついでにまた修正。検証画像追加。


新規
←管理者にだけ表示する場合チェック



トラックバック用URL:
http://r2089.blog36.fc2.com/tb.php/167-f7a72180

Appendix

profile

那駕〇

Author:那駕〇

recent entries

アクセスの多い記事

過去の記事


義援金募集

FC2「東北地方太平洋沖地震」義援金募集につきまして

ブロとも申請フォーム

この人とブロともになる

カウンタ

※ここより下の部分に掲示板とかまとめとかいうリンクがあってもそれはfc2blogの広告なので当blog内コンテンツではないです(゜д゜)
....
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。