BitmapImage
aを aに変換するには、次の方法がありますSystem.Drawing.Bitmap
。
public static Bitmap BitmapImageToBitmap(BitmapImage bitmapImage)
{
Bitmap bitmap;
using (var ms = new MemoryStream())
{
var encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
encoder.Save(ms);
bitmap = new Bitmap(ms);
}
return bitmap;
}
返された Bitmap オブジェクトを使用しようとすると、次のエラーが発生します。
OutOfMemoryException が発生しました - メモリ不足です。
ただし、コードをこれに置き換えるたびに:
public static Bitmap BitmapImageToBitmap(BitmapImage bitmapImage)
{
var ms = new MemoryStream();
var encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
encoder.Save(ms);
return new Bitmap(ms);
}
これはうまくいきます。ただし、オブジェクトの実装としてusingを使用することになっていると確信しています。何が起きてる?MemoryStream
IDisposable