关于WPF中Image控件不释放内存的问题
答案:4 悬赏:80 手机版
解决时间 2021-04-17 12:09
- 提问者网友:温旧梦泪无声
- 2021-04-17 07:12
关于WPF中Image控件不释放内存的问题
最佳答案
- 五星知识达人网友:廢物販賣機
- 2021-04-17 08:10
由于Image.Source切换BitmapImage后,仍然抓着旧的bmImg不放,导致内存溢出.再多的内存也不够用.
先把图片缓存成二进制,这样可以释放对图片文件资源的占用,后面代码执行效率高;用通过MemoryStream生成的Source,用完就被释放了。
参考以下代码:
byte[] FacePicture = BitmapImageToByteArray(img)//图片转成数组的方法网上有很多,自己找下吧。
ImageSourceConverter imageSourceConverter = new ImageSourceConverter();
MemoryStream stream = new MemoryStream(FacePicture);
BitmapFrame source = imageSourceConverter.ConvertFrom(stream) as BitmapFrame;
bitmap.Dispose();
ImageRQ.Source = source;
多张图片,自己做个循环吧!
先把图片缓存成二进制,这样可以释放对图片文件资源的占用,后面代码执行效率高;用通过MemoryStream生成的Source,用完就被释放了。
参考以下代码:
byte[] FacePicture = BitmapImageToByteArray(img)//图片转成数组的方法网上有很多,自己找下吧。
ImageSourceConverter imageSourceConverter = new ImageSourceConverter();
MemoryStream stream = new MemoryStream(FacePicture);
BitmapFrame source = imageSourceConverter.ConvertFrom(stream) as BitmapFrame;
bitmap.Dispose();
ImageRQ.Source = source;
多张图片,自己做个循环吧!
全部回答
- 1楼网友:猎心人
- 2021-04-17 10:06
我怀疑是电脑处理速度不够,在那么短时间内没能及时回收。
我刚才试了,10150张图片不卡,不阻塞。我得是台式i5,显卡也可以。
我刚才试了,10150张图片不卡,不阻塞。我得是台式i5,显卡也可以。
- 2楼网友:老鼠爱大米
- 2021-04-17 09:04
在结束后调用GC.Collect()试试
- 3楼网友:污到你湿
- 2021-04-17 08:52
XP系统回收比较慢,win7就好很多
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯