как получить exif из фото?

Я хочу получить exif с картинки. как мне это сделать оптимально?

NSData *dataOfImageFromGallery = UIImageJPEGRepresentation (workingImage,0.5);

CGImageSourceRef imageSource;
imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)dataOfImageFromGallery, NULL);

if (imageSource == NULL) { 
    // Error loading image ... 
     return; } 

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:NO], (NSString *)kCGImageSourceShouldCache, nil]; 
CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, (__bridge CFDictionaryRef)options); 

if (imageProperties) { 
    NSNumber *width = (__bridge NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth); 
    NSNumber *height = (__bridge NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight); 

    CFRelease(imageProperties); 

    NSLog(@"width: %@", width);
    NSLog(@"height: %@", height);  
}

это печать width и height, но свойства EXIF ​​​​около 40 в CGImageProperties.h в файле библиотеки ImageIO.h, и я не знаю, как распечатать все сразу.


person Tomasz Szulc    schedule 09.01.2012    source источник


Ответы (3)


Используйте exiftool, мой простой проект на основе exiftool

person Volodymyr B.    schedule 09.01.2012
comment
я не понимаю. я должен написать эту функцию. вы даете мне свое приложение. - person Tomasz Szulc; 09.01.2012

Если вы ориентируетесь на IOS 4 и выше, вам следует использовать ALAssetsLibrary. Здесь много тем, описывающих библиотеку ALAssetsLibrary и способы получения данных EXIF ​​из изображения.

Имейте в виду, однако, если пользователь не разрешает службы определения местоположения для вашего приложения, ALAssetsLibrary не будет работать и сообщит об ошибке (отказано в доступе)

person Lefteris    schedule 09.01.2012

Если все, что вы хотите сделать, это записать все содержимое словаря imageProperties, то просто выполните:

NSLog(@"imageProperties: %@", imageProperties);

Если это не то, что вы ищете, пожалуйста, уточните свой вопрос.

person Martin Gordon    schedule 09.01.2012