2014-01-29 3 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 я мог бы это сделать, но я искал в документации Apple, и я не видел что-нибудь.

Спасибо!

+0

Проверки имени файла будет самым простым? – CW0007007

+0

Как я могу получить имя файла, когда я его сохраню? Я загружаю NSData, я конвертирую его в UIImage и сохраняю в своем пользовательском альбоме ... У меня нет определенного имени для изображения – kemmitorz

ответ

0

Вы можете получить URL-адрес актива после процесса сохранения, используя блок завершения. Вы можете получить сохраненное изображение с помощью этого URL-адреса.

К сожалению, вы не можете проверить наличие файла в Фотобиблиотека. Причина в том, что система будет автоматически вставлять много дополнительной информации с изображением, пока вы сохраняете его в Photolibrary. например, местоположение, время и т. д. Таким образом, двоичный контент будет отличаться для одинаковых изображений.

Итак, у вас есть только одно решение. Сохранение изображений в папку документа и сделать файл существует, используя алгоритмы как CRC, MD5 и т.д ..

Смежные вопросы