iOS Swift。 如何从一个UIImage(NSURL)获取GPS元数据?

参考一个只有NSURL的图片。 如何从中获取GPS元数据? 当然,我可以从NSURL加载一个UIImage,但是什么?

我在这里find的大部分答案是关于UIImagePicker,然后使用ALAssets,但是我没有这个选项。

回答我自己的问题。 获得GPS元数据的记忆效率和快速的方法是

let options = [kCGImageSourceShouldCache as String: kCFBooleanFalse] if let data = NSData(contentsOfURL: url), imgSrc = CGImageSourceCreateWithData(data, options) { let metadata = CGImageSourceCopyPropertiesAtIndex(imgSrc, 0, options) as Dictionary let gpsData = metadata[kCGImagePropertyGPSDictionary] as? [String : AnyObject] } 

第二个select是

 if let img = CIImage(contentsOfURL: url), metadata = img.properties(), gpsData = metadata[kCGImagePropertyGPSDictionary] as? [String : AnyObject] { … } 

它看起来更好,但使用更多的内存(通过分析器testing)。

Swift 3的更新版本:

 let options = [kCGImageSourceShouldCache as String: kCFBooleanFalse] if let data = NSData(contentsOfURL: url), let imgSrc = CGImageSourceCreateWithData(data, options as CFDictionary) { let metadata = CGImageSourceCopyPropertiesAtIndex(imgSrc, 0, options as CFDictionary) as? [String : AnyObject] if let gpsData = metadata?[kCGImagePropertyGPSDictionary as String] { //do interesting stuff here } }