« 2007年6月 | トップページ | 2007年8月 »

2007年7月31日 (火)

セルクマで恥..

[Z]ZAPAブロ~グ2.0によると


自分が作成したウェブページを自分のソーシャルブックマークに登録する「セルフブックマーク」。略して「セルクマ」。

という行為は

「セルクマって、恥ずかしい行為だと思っていた…」

というぐらい基本的に恥ずかしいことらしい。。

・・

私は1年前「MugenViewer」をリリースした時、にわかに「はてなブックマーク」さんからのアクセスが多くなって、初めてソーシャルブックマークというサービスを知った。

で、さっそく「はてな」会員になり、せっかくなので自分の「MugenViewer」のサイトを登録した。

あまり、、というか全くソーシャルブックマークの意味を理解していなかった私は、「フムフム、タグっていうもんを付けて管理するのね。。」と、にわかジコミでタグ付けにチャレンジ。。。

そして最初に自分のサイトにつけたタグは

[自分]


・・・だって、自分のサイトだから。。。

今思うと顔から火が出る。。。

7月 31, 2007 日記・コラム・つぶやき | | コメント (0) | トラックバック (0)

2007年7月 6日 (金)

GIF画像、GIFアニメをキレイにするツール公開

数日前から訳あってGIFの書き出しライブラリを自作していました。

で、おまけでGIF画像をスムージングするツールを作って公開しました。

http://www.piclet.jp/


変換前

変換後

出来立てのGIF(LZW)書き出しなので、少し不安はありますが。。一応動いているようです。

7月 6, 2007 Java, JavaWebStart普及委員会 | | コメント (2) | トラックバック (0)

2007年7月 4日 (水)

GIF Format入出力に関する覚書。特にLZW部分

GIFフォーマットを入出力しようとして、LZWあたりで悩んだ人(自分)のための覚書。

■GIFフォーマット

まず、GIFフォーマットに関してはざっくり以下のページで理解できるが、LZW部分はあまり紹介されていない。

資料1)GIFフォーマットの解説(日本語)
http://www.tohoho-web.com/wwwgif.htm

資料2)GIFフォーマットの解説(日本語)
http://www.mars.dti.ne.jp/~torao/program/appendix/gif.html

■LZWの基本

LZWの基本をまず把握しておいた方がよい。但し、以下のページだけではGIF書き出しのための情報としては不足。

資料3)LZWの説明(日本語)
http://www2.starcat.ne.jp/~fussy/algo/algo8-5.htm

資料4)wikipediaでLZWをざっくり説明(英語)
http://en.wikipedia.org/wiki/LZW


■GIF用LZWの詳細

で、GIFのフォーマットと、LZWの基本が理解できたら、以下の仕様書らしき物を読むと一応必要な情報が得られる。

資料5)GIF89aの仕様書(英語)
http://www.martinreddy.net/gfx/2d/GIF89a.txt

資料6)GIFのLZWの詳細(英語)
http://www.martinreddy.net/gfx/2d/GIF-comp.txt


■サンプルデータの用意

GIFのサンプルデータを書き出してバイナリエディタでチェックすると徐々になぞが解けてくる。
Photoshop等で、非常に小さなGIFデータを何パターンか書き出し、バイナリエディタで確認、比較するとよいかと。

■引っかかりやすい点(悩んだ点)

※勉強段階で書いているので、勘違いが含まれているかも知れません!!!!

・LZWの辞書は保存しないですむ。データから辞書を生成し、生成したものを参照していく。読み込む(書き出す)につれて、辞書がドンドン膨らんでいく。

・色数に応じて、最初にLZWの辞書を初期化するが、さらに「Clear Code(CC)」と、「End of infomation code(EOI)」 が辞書にあらかじめ登録される!!
・CC,EOIが辞書に入るため、色数が N bit/pixel のとき、最初の出力コードのビット数は N+1。CCは辞書の(2**N)番、EOIは(2**N+1)番に登録される。
・読み込み(書き出し)過程で辞書に追加していくとき、 (2**N+2)番からとなる。
・LZWの出力コードのビット数は辞書の中身が増えるにつれて増えていく。
※つまり、同じ辞書の番号をあらわす場合でも、表現するビット数が変わっていく。辞書の1番目なら 001 >> 0001 >> 00001のようになっていく(例は最初に3bitの場合)

・X bit/pixel のとき、N=Xだが、1 bit/pixel のときは、N=2とする <自信なし

・書き出されていくビットの並びは、一見ややこしい。1バイト単位で、右詰め(左詰めじゃない)。資料5のp.33あたりをジックリ読むと見えてくる。

・読み込み時にCC(Clear Code)に遭遇したときは、辞書を初期化しなおす。このあたりは資料6のp.4あたり。
・逆に書き込み時に辞書番号が4095(16進でFFF)に到達した場合には、CCの番号を書き出して、辞書をクリアする。最大で12bitしか使わない
・書き出しの最初にもCCを書き出す!

・データの終わりに来たときは、残った文字をあらわす辞書番号を書き出し、その後にEOIの番号を書き出す。ビットがあまったら0でよい。<<自信なし

7月 4, 2007 | | コメント (2) | トラックバック (0)