nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

System.Drawing.BitmapとImageSourceを相互変換する

WPFで利用されている画像オブジェクトであるImageSourceと、WinFormsなんかで利用しているSystem.Drawing.Bitmapを相互変換したい場合がたまにあるため、ここにメモを残しておきます。

注意事項

ここで紹介しているコードは以下の条件を満たす場合、メモリリースする可能性があります。

  • バックグラウンド処理で実行されている
  • そのスレッドが実行中に殺される可能性がある

上記の条件を満たす場合、以下の記事も併読することをお勧めします。

qiita.com

System.Drawing.BitmapからImageSourceへ変換する

以下の実装が汎用的かつ高速で便利です。

BitmapSourceからSystem.Drawing.Bitmapへ変換する

以下の実装がおすすめなんですけど。。。
PixcelFormatの決定だけ自動でやるのが面倒なので、外から貰うように手抜きが。。。
あとImageSourceじゃなくてBitmapSourceでごめんなさい。
いくつか注意事項があるのでコード内のコメントを確認してください。

以上です。