簡體   English   中英

iOS Swift。如何從UIImage(NSURL)獲取GPS元數據?

[英]iOS Swift. How to get a GPS metadata from just a UIImage (NSURL)?

引用僅具有NSURL的圖像。 如何從中獲取GPS元數據? 當然,我可以從NSURL加載UIImage,但那又怎么樣?

我在這里找到的大多數答案都是關於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] { … }

它在Swift中看起來更好但使用更多內存(通過Profiler測試)。

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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM