0

BitMapImage (C#) で CopyPixels メソッドを使用しており、生のピクセル データを取得したいと考えています。ただし、デバッガーで raw バッファーを調べると、最初の 8 バイトが常に (16 進数) であることがわかります。

67174944 00300000

コードのスニペットは次のとおりです。

int stride = frm.PixelWidth * frm.Format.BitsPerPixel / 8;
stride = (stride % 4) == 0 ? stride : (stride + 4);
rawPixels = new byte[stride * frm.PixelHeight * frm.Format.BitsPerPixel / 8];
frm.CopyPixels(rawPixels, stride, 0);

このヘッダーが何であるかを示すドキュメントが見つかりません。興味深いことに、6717 に相当するテキストは「DI」です。これは、これが DIB ヘッダーと関係があると私に思わせましたが、私はそこが間違っていると確信しています。ありがとう。

4

2 に答える 2

0

配列オブジェクトのヘッダーを見ています。配列要素を見つけるには、アドレスに 8 を追加します。

于 2010-11-28T19:34:17.183 に答える
0

最初の 8 バイトの何が問題なのかわかりませんが、その他の注意点は次のとおりです。

ストライドの計算は私には奇妙に見えます。どうですか

stride = ((stride+3)/4)*4;

次に、rawPixels-buffer のサイズを読み取る必要があると思います

rawPixels = new byte[stride * frm.PixelHeight]
于 2010-11-28T19:40:25.623 に答える