我有以下方法,将 a 转换BitmapImage
为 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
对象 implements IDisposable
。这里发生了什么?