「WPF」BitmapSourceのPixelFormatを変更する。

C# コンピュータ
C#
画像を加工する場合様々なPixelFormat対応するのは骨が折れるので指定のPixelFormatに変換してしまいます。
加工がしやすそうなPixelFormats.Bgra32へ変換するメソッドを作成してみました。
    public static System.Windows.Media.Imaging.BitmapSource
    ConvertToBgra32(System.Windows.Media.Imaging.BitmapSource src)
    {
        if (src.Format == System.Windows.Media.PixelFormats.Bgra32) return src;
        
        var dst = new System.Windows.Media.Imaging.FormatConvertedBitmap(
            src, System.Windows.Media.PixelFormats.Bgra32, null, 0);
        dst.Freeze();

        return dst;
    }
返還前と変換後で以下のような結果になりました。
変換前画像:Bgr32
変換後画像:Bgra32
変換されているようです。
読み込んだ画像は24bitのJpegファイルなのですが、BitmapSourceのFormatプロパティはBgr32になっていました。
グレースケールの画像を試してみました。
変換前画像:Gray8
変換後画像:Bgra32
こちらも上手く行っているようです。

コメント