次のコードを使用して、ファイルからバイト配列にピクセルをロードしています。
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 に保存すると色が変わるのはなぜですか? -しかし、私はそれを修正する方法がわかりません。