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


ぱんまん  2005-07-13 02:31:36  No: 58285

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

お願いいたします。


dairygoods  2005-07-13 04:55:47  No: 58286

そのまんまです。
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-13 08:01:01  No: 58287

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加