Извлечение широты и долготы из изображения Цель c

У меня возникла проблема при получении данных широты и долготы с изображения (у которого есть данные о географическом местоположении). Я импортировал структуру EXIF ​​и использую для этого следующий код:

 NSData *jpegData = [UIImageJPEGRepresentation(image, 0.5) base64String];
EXFJpeg* jpegScanner = [[EXFJpeg alloc] init];
[jpegScanner scanImageData: jpegData];
EXFMetaData* exifData = jpegScanner.exifMetaData;
id latitudeValue = [exifData tagValue:[NSNumber numberWithInt:EXIF_GPSLatitude]];
id longitudeValue = [exifData tagValue:[NSNumber numberWithInt:EXIF_GPSLongitude]];
NSLog(@"Longitude: %@  Longitude: %@", latitudeValue, longitudeValue);

Но он возвращает значение NULL как для широты, так и для долготы, может ли кто-нибудь сказать мне, что я делаю неправильно в приведенном выше коде? Пожалуйста, помогите мне. Заранее спасибо!!


person Andrews J    schedule 02.08.2013    source источник
comment
может быть, здесь вы можете найти помощь /вопросы/9766394/   -  person Nicolas Manzini    schedule 02.08.2013


Ответы (2)


Вы можете сделать это с помощью структуры alasset.

ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc]init];
[assetsLibrary assetForURL:photoUrl resultBlock:resultBlock failureBlock:nil];
ALAssetsLibraryAssetForURLResultBlock resultBlock = ^(ALAsset *photoAsset) {        
    CLLocation *location = [photoAsset valueForProperty:ALAssetPropertyLocation];

    NSMutableDictionary *exifDataDict = [[NSMutableDictionary alloc] init];
    if (location != nil) {
        [exifDataDict setObject:[NSNumber numberWithDouble:location.coordinate.latitude] forKey:@"latitude"];
        [exifDataDict setObject:[NSNumber numberWithDouble:location.coordinate.longitude] forKey:@"longitude"];
    }
}
person Apurv    schedule 02.08.2013
comment
Теперь устарело (начиная с iOS 9, я считаю) - person Max von Hippel; 26.07.2016

У меня была аналогичная проблема однажды. При работе с этим у меня сложилось впечатление, что UIImage как бы удаляет все или некоторые данные EXIF. EXIFJpeg отлично работал для меня, когда данные изображения считывались из файла, связанного или веб-сервиса и т. д. напрямую, но мне не удалось извлечь какие-либо разумные EXIF, когда я сохранил изображение в памяти как объект UIImage, а затем использовал UIImageJPEGRepresentaiion для получения данных изображения и EXIF из этих данных.

Я не буду подписывать это кровью, но это было мое впечатление, и использование «сырых» данных из файла действительно сработало для меня. Итак, я получил файл с какого-то сервера, затем извлек EXIF, включая геотеги (если они есть), и после этого создал файл UIImage.

person Hermann Klecker    schedule 02.08.2013