如何从照片中获取exif?

时间:2012-01-09 17:16:57

标签: iphone objective-c ios image-processing 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);  
}

此打印widthheight,但CGImageProperties.h库文件中ImageIO.h的EXIF属性约为40,我不知道如何一次打印所有内容。

3 个答案:

答案 0 :(得分:2)

使用exiftool, 我的simple project基于exiftool

答案 1 :(得分:0)

如果您的目标是IOS 4及更高版本,则应使用ALAssetsLibrary。 这里有很多线程描述了ALAssetsLibrary以及如何从图像中获取EXIF数据。

请注意,如果用户不允许您的APP ALAssetsLibrary的位置服务将无效并将报告错误(访问被拒绝)

答案 2 :(得分:0)

如果您要做的只是记录imageProperties字典的全部内容,那么就这样做:

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

如果那不是您要找的,请澄清您的问题。