ページ 11

bmpについて

Posted: 2012年7月12日(木) 11:47
by tes
bmp(白黒画像、640*480)の色情報を取得するにはどの様にすればいいでしょうか?

Re: bmpについて

Posted: 2012年7月12日(木) 12:04
by softya(ソフト屋)
言語や環境面の説明がないので大雑把にしかお答えできませんが、ファイルをバイナリデータとして読み込み形式を判定して色情報を得ます。
bmpの保存されている形式を判定しないと色情報を取得することはできません。

Re: bmpについて

Posted: 2012年7月13日(金) 22:21
by MoNoQLoREATOR
画像の幅、高さが決まっているのであれば、バイナリデータを読み込んだ後ヘッダー部分(先頭54バイト)は捨ててしまって構いません。
あとは、
[RGB][RGB][RGB]・・・[\0]
[RGB][RGB][RGB]・・・[\0]
[RGB][RGB][RGB]・・・[\0]
・・・・・・・・・
・・・・・・
・・・
という構造に(大抵は)なっていると思いますので、ご自由にデータを取り出してください。
※R,G,Bは1バイトずつです

Re: bmpについて

Posted: 2012年7月13日(金) 22:39
by みけCAT
MoNoQLoREATOR さんが書きました:画像の幅、高さが決まっているのであれば、バイナリデータを読み込んだ後ヘッダー部分(先頭54バイト)は捨ててしまって構いません。
あとは、
[RGB][RGB][RGB]・・・[\0]
[RGB][RGB][RGB]・・・[\0]
[RGB][RGB][RGB]・・・[\0]
・・・・・・・・・
・・・・・・
・・・
という構造に(大抵は)なっていると思いますので、ご自由にデータを取り出してください。
※R,G,Bは1バイトずつです
[RGB]ではなく、[BGR]だと思います。
あと、最後の[\0]は必ず1個とは限らず、0~3個で、その行のバイト数が4の倍数になるように埋める役割です。
オフトピック
私が知っているビットマップでは、の話です。
そして、「白黒画像」というのは「モノクロビットマップ」のことかもしれません。あくまで推測ですが。

Re: bmpについて

Posted: 2012年7月13日(金) 22:56
by ISLe
RGB形式なら白黒画像と言わずグレースケール画像と言う気がします。

24ビット/ピクセルのBI_RGB形式では、B,G,Rの順に1バイトずつ並んでいますが、一ラインごとに4バイト境界に揃えられるので、画像の横幅*3とはならない場合があります。
あと一般的には画像の見た目で下のラインから上に向かって格納されますが、これもヘッダ情報の縦サイズが負の数の場合は反転します。

24ビット/ピクセルではない場合やBI_RGB形式ではない場合、ヘッダ部分が54バイトではない可能性がありますし、ピクセルデータの並びが異なる可能性もあります。

#カブった