BMPファイルの形式
http://prog.usamimi.info/bmp/format/
上のURLに詳しい。
==ファイルヘッダ==
2bytes : BM(固定ASCII文字列)
4bytes : filesize(byte)
4bytes : 0(2bytes reserved * 2)
4bytes : 36(ファイル先頭から画像データ本体までのオフセット=54bytes=0x36)
==情報ヘッダ==
4bytes : 0x28(情報ヘッダサイズ=40byte=0x28)
4bytes : 画像幅
4bytes : 画像高
2bytes : 1(指定)
2bytes : 0x20(1ピクセルあたり32bit)
24bytes : 0(指定しなくても良い)
以下ファイルデータ。
どうやら、このヘッダのデータは1byteごとに取得するようになってるようだ。そうでないとヘッダのデータが明らかにおかしい。
例えばファイルサイズが
36 00 24 00
を前から読んだら6GB以上のデータと言うことになってしまう。これは、
0x 00 24 00 36
と読めばよさそうだ。
えーと、エンディアンじゃないのかこれ?
エンディアンについて調べてみたら、これぞまさにリトルエンディアン形式のデータ格納じゃないか!
…ビットマップについて調べてみたら、ちゃんと「ヘッダのデータはリトルエンディアンで記録されます」って書いてあるじゃないか…。