在我的WPF应用程序中,我需要加载多个图像以在UI中显示它。为此,我使用WriteableBitmap,然后将byte []传递给Writeable.Writepixels()。在执行此操作时,我在执行5-6后出现内存异常。图像大小为13-15 MB。我在任务管理器中查看了内存消耗,其中我注意到每当调用Writepixels()时内存都会大幅增加。请参考以下代码:
WriteableBitmap bitmap = new WriteableBitmap(img.Width, img.Height, 96, 96, format, null);
var stride = data.Width * ((format.BitsPerPixel + 7) / 8);
bitmap.WritePixels(new Int32Rect(0, 0, data.Width, data.Height), data.Bytes, stride, 0);
return bitmap;
我在网上搜索了2天但是,我找不到合适的解决方案来处理WriteableBitmap()。请帮我解决问题。
答案 0 :(得分:0)
重复使用WriteableBitmap实例,而不是每次调用方法时都创建一个新实例。
在类中声明一个字段来保存实例:
private WriteableBitmap bitmap;
然后改变你的方法:
if (bitmap == null || bitmap.PixelWidth != img.Width || bitmap.PixelHeight != img.Height)
{
bitmap = new WriteableBitmap(img.Width, img.Height, 96, 96, format, null);
}
var stride = data.Width * ((format.BitsPerPixel + 7) / 8);
bitmap.WritePixels(new Int32Rect(0, 0, data.Width, data.Height), data.Bytes, stride, 0);
return bitmap;