私はCシャープ、.net 4(重要な場合はクライアントプロファイル)をbyte
使用しており、画像の生データを含む配列を持っています。具体的には、この画像:
これは SANE テスト バックエンドからの出力であり、フォーマットは SANE の Web サイトで詳しく説明されています。ちなみに、私はパラメータを渡しました:
- 深さ: 8
- モード: 色
そしてそれは戻ってきました:
- フォーマット: RGB
- 深さ: 8
- 行: 196
- ラインあたりのピクセル: 157
- 1 行あたりのバイト数: 471
- 長さが 92316 バイトのバイト ストリーム
したがって、数値は妥当なようです (196 * (157 * 471) = 92316) - 1 ピクセルあたり 3 バイト (24 ビット)。
SANE のドキュメントを読むと、データは左上隅から左から右、上から下にピクセルあたり 3 バイトの順序で並べられます。
red,green,blue red,green,blue
-------------- --------------
byte 1 byte 2 ...
私は画像についてよく知っているので、それをビットマップにロードするのは非常に簡単だと思い、これをノックアップしました:
var bmp = new Bitmap(157, 196, PixelFormat.Format24bppRgb);
BitmapData bmpData = bmp
.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.ReadWrite,
bmp.PixelFormat);
Marshal.Copy(data, 0, bmpData.Scan0, data.Length);
bmp.UnlockBits(bmpData);
しかし、それはこれを生み出しました:
近いですが、いわば葉巻はありません。
それで、私は何を間違えましたか?