32ビットのビットマップファイルを24ビットに変換するには?


ぱんまん  2005-07-12 17:31:36  No: 58285  IP: 192.*.*.*

現在、ツールで取得した32ビットのビットマップファイルを
24ビットに変換するプログラムを作ろうと思っているのですが、
32bitのDIBは各画素がBGRAの順で4byteづつ格納されているので、
このうち、Aの情報を無視してBGRの順で24bitのDIBのデータに格
納していけばいいのかなとは思うのですが、どう記述していけば
よいのか分かりません。
具体的なサンプルなどあれば教えて下さい。

お願いいたします。

編集 削除
dairygoods  2005-07-12 19:55:47  No: 58286  IP: 192.*.*.*

そのまんまです。
char data32[] = ...; // 32bit array
char data24[] = ...; // 24bit array
int i32 = 0, i24 = 0;
while (配列の終わりまで) {
  data24[i24+0] = data32[i32+0];
  data24[i24+1] = data32[i32+1];
  data24[i24+2] = data32[i32+2];
  i24 += 3;
  i32 += 4;
}

編集 削除
てつや  2005-07-12 23:01:01  No: 58287  IP: 192.*.*.*

いや、基本的にはそうなんですが、1列が4byte区切りになっているから
ずれちまいます。

けど全部書くのはめんどい...
http://www.sm.rim.or.jp/~shishido/
この辺を見て参考にしてください。

編集 削除