読者です 読者をやめる 読者になる 読者になる

旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【WPF】 二次元配列をWriteableBitmapに変換する

二次元配列をWriteableBitmapに変換する方法をメモします。グレースケール画像をbyteの二次元配列で表現しており、これをImageクラスに表示するためWriteableBitmapに変換したかった、というのが動機になります。

using System.Windows.Media;
using System.Windows.Media.Imaging;

private WriteableBitmap ToWriteableBitmap(byte[,] image)
{
    int width = image.GetLength(1);
    int height = image.GetLength(0);
    var bitmap = new WriteableBitmap(width, height, 96.0, 96.0,
                                     PixelFormats.Gray8,
                                     BitmapPalettes.Gray256);
    int stride = width*1;
    byte[] pixels = image.Cast<byte>().ToArray();
    bitmap.WritePixels(new Int32Rect(0, 0, width, height), pixels, stride, 0);
    
    return bitmap;
}

上記のToWriteableBitmapの返り値をImageのSourceプロパティに代入することで画像を表示することが出来ます。