2015-05-14 67 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];