我有以下方法,将a转换BitmapImage为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;
}
Run Code Online (Sandbox Code Playgroud)
每当我尝试使用返回的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);
}
Run Code Online (Sandbox Code Playgroud)
这很好用.不过,我敢肯定,我应该用用作为MemoryStream对象实现IDisposable.这里发生了什么?