Google MapsからGIF形式で地図画像を取得して表示するために、GIF形式データをLCDのビットマップに展開する方法について調べています。自分で展開ルーチンをゼロから起こす必要も無いだろうということで、netpbmに含まれているgiftopnmというコマンドのソースを使おうとしています。GIF形式を展開する処理はすべてgiftopnm.cの中に含まれているようなので、このコードから必要な部分だけ抜き出して利用できそうです。
GIF形式についてもざっと勉強して、Google Mapsの返すデータの内容を確認。
なるほど、頭からシーケンシャルに読みながら展開して表示していけるのですね。カラーマップは、Image Blockの中にImage Dataに先立って記録されています。カラーマップを読み込む際に、256のインデックスから16ビット色への変換表を作っておけば、あとはイメージデータを展開しながら、簡単に色データへ変換して表示できそうです。
GIF形式についてもざっと勉強して、Google Mapsの返すデータの内容を確認。
- GIF バージョン89aを使用
- 24ビット色から256色(8ビット)を選択して表示するためのカラーマップを持つ
- 画像情報は画面左上側から順番に圧縮されて記録されているので、展開しながら順次表示していける
- 展開の結果得られるのは、各ピクセルの色情報、すなわちカラーマップへのインデックス。
なるほど、頭からシーケンシャルに読みながら展開して表示していけるのですね。カラーマップは、Image Blockの中にImage Dataに先立って記録されています。カラーマップを読み込む際に、256のインデックスから16ビット色への変換表を作っておけば、あとはイメージデータを展開しながら、簡単に色データへ変換して表示できそうです。