我需要获取用 iOS 设备的相机拍摄的图像的 GPS 坐标。我不关心相机胶卷图像,只关心使用 UIImagePickerControllerSourceTypeCamera 拍摄的图像。
我已经阅读了许多 stackoverflow 答案,例如Get Exif data from UIImage - UIImagePickerController,它假设您正在使用 AssetsLibrary 框架,该框架似乎不适用于相机图像,或者使用 CoreLocaiton 从应用程序获取纬度/经度本身,而不是来自图像。
使用 CoreLocation不是一种选择。按下快门按钮时,这不会给我坐标。(使用基于 CoreLocation 的解决方案,您需要在打开相机视图之前或之后记录坐标,当然,如果设备正在移动,坐标将是错误的。这种方法应该适用于固定设备。)
我只有iOS5,所以我不需要支持旧设备。这也适用于商业产品,所以我不能使用http://code.google.com/p/iphone-exif/。
那么,在 iOS5 中从相机返回的图像中读取 GPS 数据的选项有哪些?我现在能想到的就是将图像保存到相机胶卷,然后使用 AssetsLibrary,但这似乎很不礼貌。
谢谢!
这是我根据 Caleb 的回答编写的代码。
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
NSData *jpeg = UIImageJPEGRepresentation(image,1.0);
CGImageSourceRef source ;
source = CGImageSourceCreateWithData((__bridge CFDataRef)jpeg, NULL);
NSDictionary *metadataNew = (__bridge NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL);
NSLog(@"%@",metadataNew);
我的控制台显示:
2012-04-26 14:15:37:137 ferret[2060:1799] {
ColorModel = RGB;
Depth = 8;
Orientation = 6;
PixelHeight = 1936;
PixelWidth = 2592;
"{Exif}" = {
ColorSpace = 1;
PixelXDimension = 2592;
PixelYDimension = 1936;
};
"{JFIF}" = {
DensityUnit = 0;
JFIFVersion = (
1,
1
);
XDensity = 1;
YDensity = 1;
};
"{TIFF}" = {
Orientation = 6;
};
}
没有纬度/经度。