1

在我的应用程序中,我想从 ImagePickerController 读取图像元数据。我试过这样:

NSURL* imgURL = (NSURL *)[info valueForKey:UIImagePickerControllerReferenceURL];
NSLog(@"%@", imgURL);

CGImageSourceRef mySourceRef = CGImageSourceCreateWithURL((__bridge CFURLRef)imgURL, NULL);
NSDictionary *myMetadata = (__bridge NSDictionary *) CGImageSourceCopyPropertiesAtIndex(mySourceRef,0,NULL);

NSDictionary *exifDic = [myMetadata objectForKey:(NSString *)kCGImagePropertyExifDictionary];
NSDictionary *tiffDic = [myMetadata objectForKey:(NSString *)kCGImagePropertyTIFFDictionary];

NSLog(@"exifDic properties: %@", myMetadata); //all data
float rawShutterSpeed = [[exifDic objectForKey:(NSString *)kCGImagePropertyExifExposureTime] floatValue];
int decShutterSpeed = (1 / rawShutterSpeed);
NSLog(@"Camera %@",[tiffDic objectForKey:(NSString *)kCGImagePropertyTIFFModel]);
NSLog(@"Focal Length %@mm",[exifDic objectForKey:(NSString *)kCGImagePropertyExifFocalLength]);
NSLog(@"Shutter Speed %@", [NSString stringWithFormat:@"1/%d", decShutterSpeed]);
NSLog(@"Aperture f/%@",[exifDic objectForKey:(NSString *)kCGImagePropertyExifFNumber]);
NSNumber *ExifISOSpeed  = [[exifDic objectForKey:(NSString*)kCGImagePropertyExifISOSpeedRatings] objectAtIndex:0];
NSLog(@"ISO %i",[ExifISOSpeed integerValue]);
NSLog(@"Taken %@",[exifDic objectForKey:(NSString*)kCGImagePropertyExifDateTimeDigitized]);

但我得到 ImageIO 错误:

ImageIO:CGImageSourceCreateWithURL CFURLCreateDataAndPropertiesFromResource 失败,错误代码为 -11。

我没有找到关于错误代码 -11 的文档,只有大约 -15(错误参数)。我希望你有一个解决方案。

迎接 s4lfish

4

0 回答 0