1
請參考僅具有NSURL的圖像。 如何從中獲取GPS元數據? 當然,我可以從NSURL加載UIImage,但那又如何?iOS Swift。如何從UIImage(NSURL)獲取GPS元數據?
我在這裏找到的大部分答案都是關於UIImagePicker,然後使用ALAssets,但我沒有這樣的選項。
請參考僅具有NSURL的圖像。 如何從中獲取GPS元數據? 當然,我可以從NSURL加載UIImage,但那又如何?iOS Swift。如何從UIImage(NSURL)獲取GPS元數據?
我在這裏找到的大部分答案都是關於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]
}
第二個選項是
if let img = CIImage(contentsOfURL: url), metadata = img.properties(),
gpsData = metadata[kCGImagePropertyGPSDictionary] as? [String : AnyObject] { … }
它看起來更好斯威夫特但會佔用更多的內存(通過探查測試)。
更新版本雨燕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
}
}