如何从下载的图像获取Exif数据

在我的应用程序中,我需要从特定的URL链接下载图像,并将其分配给UIImageView 。 我不存储该图像到我的图书馆,那么在这种情况下,我怎么能得到这个图像EXIF数据 (如EXIF_TAG_CREATE_DATEEXIF_TAG_ARTIST等)在我的应用程序?

 try this NSError *error = nil; NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:@"imagePath" error:&error]; if (!error) { NSLog(@"file attributes : %@",attributes); } and this is the result : NSFileCreationDate = "2013-05-28 09:29:37 +0000"; NSFileExtensionHidden = 0; NSFileGroupOwnerAccountID = 20; NSFileGroupOwnerAccountName = staff; NSFileModificationDate = "2013-05-28 09:29:37 +0000"; NSFileOwnerAccountID = 502; NSFileOwnerAccountName = lerhan; NSFilePosixPermissions = 420; NSFileReferenceCount = 1; NSFileSize = 1494; NSFileSystemFileNumber = 46795419; NSFileSystemNumber = 234881026; NSFileType = NSFileTypeRegular; to access any data type NSLog(@"file creation date : %@",[attributes objectForKey:@"NSFileCreationDate"]); 

通过ImageIO访问图像属性,如图像高度和宽度,DPI,EXIF数据等

 CFURLRef url = CFURLCreateFromFileSystemRepresentation (kCFAllocatorDefault, (const UInt8 *)inputFileName, strlen(inputFileName), false); if (!url) { printf ("* * Bad input file path\n"); } CGImageSourceRef myImageSource; myImageSource = CGImageSourceCreateWithURL(url, NULL); CFDictionaryRef imagePropertiesDictionary; imagePropertiesDictionary = CGImageSourceCopyPropertiesAtIndex(myImageSource,0, NULL); CFNumberRef imageWidth = (CFNumberRef)CFDictionaryGetValue(imagePropertiesDictionary, kCGImagePropertyPixelWidth); CFNumberRef imageHeight = (CFNumberRef)CFDictionaryGetValue(imagePropertiesDictionary, kCGImagePropertyPixelHeight); int w = 0; int h = 0; CFNumberGetValue(imageWidth, kCFNumberIntType, &w); CFNumberGetValue(imageHeight, kCFNumberIntType, &h); CFRelease(imagePropertiesDictionary); CFRelease(myImageSource); printf("Image Width: %d\n",w); printf("Image Height: %d\n",h); 

(来源: http : //developer.apple.com/library/ios/#qa/qa1654/_index.html )

  NSString *myPath = [[NSBundle mainBundle] pathForResource:@"IMG_2733" ofType:@"JPG"]; NSURL *myURL = [NSURL fileURLWithPath:myPath]; CGImageSourceRef mySourceRef = CGImageSourceCreateWithURL((CFURLRef)myURL, NULL); NSDictionary *myMetadata = (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]); 

(来源: http : //blog.depicus.com/index.php/2011/05/07/getting-exif-data-from-images-on-ios/ )

通过开源(但过时的)iphone-exif库访问EXIF属性

 NSData* theImageData = UIImageRepresentation(anImage,1.0); EXFJpeg* jpegScanner = [[EXFJpeg alloc] init]; [jpegScanner scanImageData: theImageData]; EXFMetaData* exifData = jpegScanner.exifMetaData; EXFJFIF* jfif = jpegScanner.jfif; id tagValue = [exifData tagValue: aTagId]; 

(来源: http : //code.google.com/p/iphone-exif/ )