2

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

4

2 回答 2

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"];
    }
}
于 2013-08-02T14:03:24.707 回答
0

我曾经遇到过类似的问题。在处理它时,我得到的印象是UIImage剥离了全部或部分 EXIF 数据。EXIFJpeg当从文件、boundle 或 web 服务等直接读取图像数据时,对我来说工作得很好,但是当我将图像作为UIImage对象存储在内存中然后用于UIImageJPEGRepresentaiion获取图像数据和 EXIF 时,我没有设法提取任何合理的 EXIF那个数据。

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

于 2013-08-02T13:41:38.397 回答