从图像中提取纬度和经度目标c

时间:2013-08-02 13:35:18

标签: ios objective-c uiimage geotagging

从图像中获取纬度和经度数据时遇到问题(具有地理位置详细信息)。我已导入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值,有人可以告诉我在上面的代码中我做错了什么吗?请帮帮我。在此先感谢!!

2 个答案:

答案 0 :(得分:1)

您可以使用框架。

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"];
    }
}

答案 1 :(得分:0)

我有一次类似的问题。在处理它时,我得到的印象是UIImage剥离了所有或部分EXIF数据。从文件,边界或webservice等读取图像数据时,EXIFJpeg对我来说很好。但是当我将图像作为UIImage对象存储在内存中时,我无法提取任何理由的EXIF使用UIImageJPEGRepresentaiion从该数据中获取图像数据和EXIF。

我不会在血液中签名,但这是我的印象,使用文件中的“原始”数据确实对我有用。所以我从某个服务器收到了该文件,然后提取了EXIF,包括地理标记(如果有的话),之后创建了UIImage