0

次のコードを使用して、ファイルからバイト配列にピクセルをロードしています。

Bitmap bmp = new Bitmap(filename);
var rect = new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height);
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
IntPtr ptr = bmpData.Scan0;
int numBytes = bmpData.Stride * bmp.Height;
byte[] rgbValues = new byte[numBytes];
Marshal.Copy(ptr, rgbValues, 0, numBytes);

これは問題ではないと確信しています。ファイルを読み込んだ後、色を操作して表示し、WPF ウィンドウに表示したいと考えています。

そこで、次の行でビットマップ ソースを作成します。

BitmapSource img = BitmapSource.Create(width, height, 96, 96, PixelFormats.Rgb24, null, pixels, stride);

問題は、赤のバイトが緑のバイトと入れ替わることです。これは似ています - BitmapSource を PixelFormat.Format48bppRgb の Bitmap に保存すると色が変わるのはなぜですか? -しかし、私はそれを修正する方法がわかりません。

4

1 に答える 1

0

次に、BitmapSource を作成するPixelFormats.Bgr24代わりに使用できます。PixelFormats.Rgb24

var img = BitmapSource.Create(
    width, height, 96, 96, PixelFormats.Bgr24, null, pixels, stride);
于 2013-12-15T19:48:16.830 に答える