2009.06.20
テキストファイルでビットマップ画像を作成 X BitMap(XBM)フォーマット
Wikipedia - X BitMap
http://en.wikipedia.org/wiki/X_BitMap

「X BitMap(XBM)」というビットマップ画像のフォーマットを最近知った。

テキストエディタで次のように書く。

#define test_width 16
#define test_height 7
static char test_bits[] = {
0x13, 0x00, 0x15, 0x00, 0x93, 0xcd, 0x55, 0xa5, 0x93, 0xc5, 0x00, 0x80,
0x00, 0x60 };

これを拡張子「.xbm」のテキストファイルとして保存するだけで、次のようなビットマップ画像(幅16ピクセル、高さ7ピクセル)になるのだ。

{{Blarg.xbm.png}}

Firefoxでは、これをそのまま画像として表示できる。これには驚いた。

ちなみに上のテキストファイルの内容は、

・幅16ピクセル、高さ7ピクセルという画像サイズを最初に指定
・16×7=112ピクセルのそれぞれについて、黒か白かのビット(オン・オフ)を決める
・それを8ビット=1バイト(2の8乗)ずつ書く

というふうにできている。「0x13」といったものが「2ケタの16進数(2の4乗)」で、これが14個並んでいるので、

(「2の4乗」×2)×14=「2の112乗」

となり、112ピクセル分のビット(オン・オフ)を指定していることになる。

SVGもそうだが、こういうふうに人間が読めるテキストで「画像を書く」ことができて、その中身がわかるのは面白い。

SVGはベクター形式だが、XBMはビットマップ形式なので、いわば「ドット打ち」をテキストでやっているようなものだ(もっと直接的な表現にPBMというフォーマットがある)。原始的であるゆえにわかりやすく、想像力を刺激される。


関連:
Netpbm format(PPM、PGM、PBM)
http://en.wikipedia.org/wiki/Netpbm_format

関連エントリ:
Firefox 1.5 リリース!SVGネイティブサポートの衝撃!!
http://mojix.org/2005/11/30/120211
タグ: