2014-01-29 56 views
1

我需要知道圖像是否已經在iOS圖庫中。我正在開發一個消息客戶端應用程序,並且在我的聊天列表中,當我點擊圖像縮略圖時,我可以下載傳入消息的圖像/視頻。檢查圖像是否已經在圖庫中並檢索它

問題是,當我點擊縮略圖時,我下載並將該圖像保存到iOS照片庫中,但如果再次點擊我不想再次下載並保存,我想從中檢索它照片庫。

恢復,我想在照片庫中尋找圖像並找回它。

這裏是我的代碼將圖像保存在我的自定義相冊使用ALAssetsLibrary:

[self writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation completionBlock: 
    ^(NSURL* assetURL, NSError* error) 
    { 
     if (error!=nil) { 
     completionBlock(error); 

     return; 
     } 

     //add the asset to the custom photo album 
     [self addAssetURL: assetURL 
        toAlbum:albumName 
     withCompletionBlock:completionBlock]; 
    } 
]; 

-(void)addAssetURL:(NSURL*)assetURL toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock 
{ 
    __block BOOL albumWasFound = NO; 

    [self enumerateGroupsWithTypes:ALAssetsGroupAlbum 
         usingBlock: 
     ^(ALAssetsGroup *group, BOOL *stop) 
     { 
      if ([albumName compare: [group valueForProperty:ALAssetsGroupPropertyName]]==NSOrderedSame) { 
       albumWasFound = YES; 
       [self assetForURL: assetURL 
         resultBlock: 
        ^(ALAsset *asset) 
        { 
         //add photo to the target album 
         [group addAsset: asset]; 
         completionBlock(nil); 

        } failureBlock: completionBlock 
       ]; 

       return; 
      } 

      if (group==nil && albumWasFound==NO) { 
      //Target album does not exist, create it 
       __weak ALAssetsLibrary* weakSelf = self; 

       [self addAssetsGroupAlbumWithName:albumName 
             resultBlock: 
        ^(ALAssetsGroup *group) 
        { 
         [weakSelf assetForURL: assetURL 
            resultBlock: 
          ^(ALAsset *asset) 
          { 
           //add photo to the newly created album 
           [group addAsset: asset]; 
           completionBlock(nil); 

          } failureBlock: completionBlock 
         ]; 

        } failureBlock: completionBlock 
       ]; 
       return; 
      } 

     } failureBlock: completionBlock 
    ]; 
} 
與assetURL我能做到這一點

也許吧,但我蘋果的文檔中一直在尋找,我沒有看到任何東西。

謝謝!

+0

檢查文件名是最簡單的嗎? – CW0007007

+0

我在保存時如何獲取文件名?我下載的是一個NSData,我將它轉換爲UIImage並將其保存在我的自定義相冊中...我沒有圖像的特定名稱 – kemmitorz

回答

0

您可以使用完成塊在保存過程後獲取資產URL。您可以使用此資產URL檢索已保存的圖像。

不幸的是,你不能檢查文件存在 Photolibrary中。背後的原因是,系統將自動在圖像中嵌入許多額外信息,同時保存到Photolibrary中。例如位置,時間等。因此,對於相同的圖像,二進制內容將會不同。

所以,你只有一個解決方案。將圖像保存到文檔目錄中,並使用CRC,MD5等算法存在文件。