2010-12-03 2 views
5

Мне нужно получить метаданные изображения из библиотеки. Я использую кодМетаданные для изображения из библиотеки

- (void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    NSURL *assetURL = [info objectForKey:UIImagePickerControllerReferenceURL]; 

    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

    [library assetForURL:assetURL resultBlock:^(ALAsset *asset) { 
     ALAssetRepresentation *representation = [asset defaultRepresentation]; 
     metadataDict = [representation metadata]; 
     NSLog(@"%@",metadataDict); 


     } failureBlock:^(NSError *error) { 
     NSLog(@"%@",[error description]); 
     }]; 
    [library release]; 
} 

Я использую IOS 4.2 Но я не получаю мета data.Can ли один помочь мне с этим?

ответ

2

В коде, который вы опубликовали, нет ничего плохого. Я пробовал его в симуляторе и на устройстве, и он работает. В документации Apple для metadata указывается:

Возвращает ноль, если представление является тем, которое система не может интерпретировать.

Таким образом, это скорее всего означает, что выбранное вами изображение либо не имеет метаданных, либо изображение находится в форме, которую библиотека не распознает.

Вы не определили в своем методе metadataDict, поэтому, если вы хотите использовать за пределами своего блока, вы должны его сохранить.

metadataDict = [[representation metadata] retain]; 

Возможно, у вас есть должны объявить его с __block идентификатором, а также.

__block NSDictionary *metaDataDict; 
+0

только проблема с [metadata представления] - это очень дорого и занимает много памяти. Когда я тестирую с большим количеством фотографий фотобиблиотеки, он падает. – Puran 2013-02-21 19:11:07

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