iPhone - 如何从照片中获取位置信息

9

在iPhone应用程序中,是否可以从使用iPhone相机拍摄的照片中提取位置信息(我想这被称为地理编码)?

如果没有API调用来执行此操作,是否有任何已知方法来解析数据字节以提取信息?有什么方法可以自己实现吗?


1
使用iOS 8中的Photo框架的解决方案。 - Warif Akhand Rishi
2个回答

6
很遗憾,不行。
问题在于:jpeg文件由几个部分组成。对于这个问题,我们感兴趣的是图像数据和exif数据。图像数据是图片本身,而exif数据则包含了诸如地理编码、快门速度、相机类型等信息。
UIImage(和CGImage)仅包含图像数据,没有标签。
当图像选择器选择一个图片(无论是从库还是相机中),它返回的是UIImage,而不是jpeg。这个UIImage是从jpeg图像数据创建的,但是jpeg中的exif数据被丢弃了。
这意味着这些数据根本不在UIImage中,因此无法访问。

有没有已知的方法来解析数据字节以提取信息?也许不是API调用,而是我自己编写的东西? - bpapa
抱歉,我已经澄清了答案并解释了原因。 - Andrew Grant
这并不完全正确。有些应用程序(如Mobile Photos和PixelPipe)似乎可以处理它。不过我还没有找到任何示例代码。 - tomtaylor

2
我认为所选的答案是错误的。嗯,不是完全错误。它说的一切都是正确的,但有一种方法可以绕过这个限制。
UIImagePickerController返回一个带有UIImage的字典。其中一个键是UIImagePickerControllerMediaURL,它是“电影的文件系统URL”。然而,正如此处所述,在较新的iOS版本中,它也返回图像的URL。结合@Jasper提到的exif库,您可能能够从照片中提取地理标记。
我还没有尝试过这种方法,但正如@tomtaylor提到的那样,这必须以某种方式成为可能,因为有一些应用程序可以做到这一点。(例如Lab)。

当我尝试这个(iOS 4.2)时,它并没有返回那个键 - 只有UIImagePickerControllerMediaType、UIImagePickerControllerOriginalImage和UIImagePickerControllerReferenceURL,其中的UIImagePickerControllerReferenceURL是"assets-library://asset/asset.jpg?id=2317&ext=jpg" - Alex Brown
好知道...也许它只在3.2版本中存在? - Kenny Winker
我可以确认从“已保存照片”相册中选择照片只会返回Alex提到的三个键。当从相机中选择时,正如OP所感兴趣的那样,你既不会得到UIImagePickerControllerMediaURL也不会得到UIImagePickerControllerReferenceURL。 - dvs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接