WPFで利用されている画像オブジェクトであるImageSourceと、WinFormsなんかで利用しているSystem.Drawing.Bitmapを相互変換したい場合がたまにあるため、ここにメモを残しておきます。
注意事項
ここで紹介しているコードは以下の条件を満たす場合、メモリリースする可能性があります。
- バックグラウンド処理で実行されている
- そのスレッドが実行中に殺される可能性がある
上記の条件を満たす場合、以下の記事も併読することをお勧めします。
System.Drawing.BitmapからImageSourceへ変換する
以下の実装が汎用的かつ高速で便利です。
BitmapSourceからSystem.Drawing.Bitmapへ変換する
以下の実装がおすすめなんですけど。。。
PixcelFormatの決定だけ自動でやるのが面倒なので、外から貰うように手抜きが。。。
あとImageSourceじゃなくてBitmapSourceでごめんなさい。
いくつか注意事項があるのでコード内のコメントを確認してください。
以上です。