将照片存储在独立存储器中并阅读多张照片,无需内存消耗
问题描述:
我将用户的照片存储在独立存储器中并在列表框中显示它们。我用下面的代码从孤立的存储检索图像将照片存储在独立存储器中并阅读多张照片,无需内存消耗
BitmapImage bi = new BitmapImage();
var isoFile = IsolatedStorageFile.GetUserStoreForApplication();
if (isoFile.FileExists(imageFileName))
{
using (var imageStream = isoFile.OpenFile(
imageFileName,
FileMode.Open, FileAccess.Read))
{
//imageSource = PictureDecoder.DecodeJpeg(imageStream);
bi.SetSource(imageStream);
}
}
isoFile.Dispose();
//return imageSource;
return bi;
有图像的100 stored.Everytime的图像加载,它的内存消耗不断增加,然后用尽memory.Is的那里获得什么更好的办法图像消耗更少的内存。即使在加载结束时,我也使用GC.Collect()
。它根本不工作。
有没有更好的方式从孤立存储中读取和读取图像?
我让我的用户将照片保存在独立存储上。在我的情况下,隔离存储是更好的选择吗?
答
斯特凡·威克有一些伟大的秘诀有图片的工作,包括如何避免不必要的内存消耗,在他的博客http://blogs.msdn.com/b/swick/archive/2011/04/07/image-tips-for-windows-phone-7.aspx
你只需要对图像和内部的BitmapImage强制设定为null
释放时内存你完成了图像。
BitmapImage bitmapImage = image.Source as BitmapImage;
bitmapImage.UriSource = null;
image.Source = null;
您是否想让许多图像同时出现或一次只出现一个? – keyboardP 2011-05-08 16:16:12
一次加载的一组图像 – 2011-05-08 17:25:32
所有图像在加载后都会解压,因此它们的内存占用非常大。此外,你是否重复使用图像控件来显示内容或创建新的?不要忘记将位图图像设置为空以删除它们。 – keyboardP 2011-05-08 17:36:29