2015-12-31 67 views
0

目前我正在使用ALasset庫來獲取圖像,但是當相機膠捲中的圖像數量很大時,我正在收到內存警告問題。獲取相機膠捲上的所有圖像並將其顯示在滾動視圖上?

e.g assetsd died 

這是我的代碼從相機膠捲

[self.assetsGroup enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:(NSMakeRange(0, self.assetsGroup.numberOfAssets - 1))] options:NSEnumerationReverse usingBlock:^(ALAsset result, NSUInteger index, BOOL stop) 
      { 
       if (result) 
       { 
        UIImage *imageThumbnail; 

        imageThumbnail = [ImageHelper scaleAndRotateImage:[UIImage imageWithCGImage:[[result defaultRepresentation] fullScreenImage]] maxSize:500]; 

        if(imageThumbnail) 
        { 
         //Do your code here…. 
        } 
      }]; 

獲得的圖像如何解決內存警告和資產死的問題。 我也可以知道應用程序有滾動視圖包含所有相機膠捲圖像,但滾動顯示不是網格形式?所以我可以得到它的參考。

在此先感謝。

+0

使用:PHObject –

+0

感謝ü爲您建議..但我的應用程序在iOS 7兼容太..我不能使用PHAsset。 – Nik

回答

0

我想,而不是滾動視圖,你必須使用集合視圖與row = self.assetsGroup.numberOfAssets - 1和集合視圖單元寫的代碼如下

[self.assetsGroup enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:(NSMakeRange(0, indexPath.row))] options:NSEnumerationReverse usingBlock:^(ALAsset result, NSUInteger index, BOOL stop) 
     { 
      if (result) 
      { 
       UIImage *imageThumbnail; 

       imageThumbnail = [ImageHelper scaleAndRotateImage:[UIImage imageWithCGImage:[[result defaultRepresentation] fullScreenImage]] maxSize:500]; 

       if(imageThumbnail) 
       { 
        //Do your code here…. 
       } 
     }]; 

而且一件事imageThumbnail大小在幾KB,因此您可以存儲它(在本地目錄或coredata usging的NSData),並在使用前enumerateAssetsAtIndexes檢查圖像已經存儲那就不叫如果您targrting iOS8上起NS_CLASS_AVAILABLE_IOS(8_0)@interface PHAsset存儲圖像

+0

謝謝,但我必須在全屏顯示它,所以幾kb不會工作,即使我使用它,我的圖像會變形。 – Nik

+0

但我想當你使用網格視圖時,你必須只顯示縮略圖圖像和全屏模式,我認爲你不需要存儲它只是用'[NSIndexSet indexSetWithIndexesInRange:(NSMakeRange(0,indexPath.row))獲取]'因爲在全屏模式下你只需要一個圖像 – jay

相關問題