我有以下方法,可以将
每当我尝试使用返回的Bitmap对象时,我都会收到以下错误消息:
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;
}
每当我尝试使用返回的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
接口。这里发生了什么?
new Bitmap(temp)
或temp.Clone()
),然后处理掉这个临时位图? - CodesInChaos