2015-04-04 1 views
1

Имейте ссылку на изображение, имеющее только свой NSURL. Как получить от него метаданные GPS? Конечно, я могу загрузить UIImage из NSURL, но что тогда?iOS Swift. Как получить метаданные GPS только из UIImage (NSURL)?

Большинство ответов, которые я нашел здесь, касаются UIImagePicker, и тогда с использованием ALAssets, но у меня нет такого варианта.

ответ

4

Ответ на мой вопрос. Памяти эффективный и быстрый способ получить метаданные 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).

0

Обновленная версия для 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 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^