Top>java
画像圧縮を試みる

jpgには完全にかないませんが、ビットマップに比べれば
ファイルサイズは結構圧縮されているのでこれで良しとします。
pngよりもサイズが少ないこともあります。

方法としては、
 1:イメージをYUVに分解する
 2:U要素とV要素を半分の解像度にする
 3:U要素とV要素を量子化する <-ものすごく適当
 4:ピクセルデータは直前のピクセルとの差分を取る
 5:ピクセルデータを調べ、ハフマン符号法により符号化する
としました。(どれもかなり適当ですが)
2,3をしなければ可逆圧縮になるはず。

また、このソース群に含まれる
jp.gr.java_conf.tama.io.BitInputStream.javaと
jp.gr.java_conf.tama.io.BitOutputStream.javaは
TJP(http://www.oikaze.com/~tamada/TJP/)を使わせていただきました。

ソースファイル
戻る