2015-05-14 114 views
1

我的项目具有图像共享功能。在这个功能中,我的应用程序询问用户要从哪个库中共享。imageWithContentsOfFile内存问题

我写下面的代码来分配图像,从默认库/自定义库中检索。

  • 设备默认库

    imgVwMediaFile.image = [UIImage的imageWithCGImage:[资产缩略图]; //(ALAsset *)资产

  • 自定义库(图像是在文件/图像/用户)

    imgVwMediaFile.image = [UIImage的imageWithContentsOfFile:路径]; //(的NSString *)路径

应用在具有自定义单元格集合视图displyas这个图像。

当我选择的应用程序的定制库,然后图像是从文件目录检索,但imagewithcontentofFile cosuming大约90到100 MB的内存。

在其他情况下,当我选择应用程序默认的libray,它不会超过8或10 MB的内存。

我尝试了自定义库的栈Q/A的不同代码,但仍然存在内存问题。

-1- 
CGImageRef iref = [[UIImage imageNamed:asset] CGImage] ; 
imgVwMediaFile.image=[UIImage imageWithCGImage:iref]; 
iref=nil 

-2- 
NSData *imageData = [[NSData alloc] initWithContentsOfFile:path]; 
imgVwMediaFile.image=[UIImage imageWithData:imageData]; 
imageData=nil 

-3- 
imgVwMediaFile.image=[UIImage imageNamed:path]; 

那么请指导我,我如何从文档目录加载图像?

在不增加内存负载的情况下从文档目录加载图像的最佳方式是什么?

+0

imageWithContentsOfFile只是从没有缓存的资源包中加载图像....最好使用imageWithContentsOfFile。 – Tanuj

回答

1

问题是,你保存到磁盘的图像很大,因此加载大量的图片以显示在一个集合中需要大量的内存。您使用内置库中的缩略图,以便看到不同的结果。

理想情况下,您可以在自定义库中保存一个缩略图文件夹并显示这些文件,然后在选择图像时获取相应的全尺寸图像(基本上这是所有照片库使用的方法)。或者,您可以即时调整图像大小,但您的滚动基本上可以保证吸引人。

+0

嗨,怀恩谢谢。我制作了我的自定义库图像的缩略图,现在它变得非常有趣,而不是消耗内存。 –

-1
UIImage *img = [UIImage imageWithContentsOfFile:path];