【问题标题】:iPhone - access location information from a photoiPhone - 从照片中获取位置信息
【发布时间】:2010-10-11 14:36:12
【问题描述】:

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

如果没有 API 调用来执行此操作,是否有任何已知的方法来解析数据字节以提取信息?我可以自己滚动的东西?

【问题讨论】:

标签: iphone cocoa-touch geolocation geocoding


【解决方案1】:

很遗憾,没有。

问题是这样的;

一个 jpeg 文件由几个部分组成。对于这个问题,我们感兴趣的是图像数据和 exif 数据。图像数据是图片,exif 数据是存储地理编码、快门速度、相机类型等信息的地方。

一个 UIImage(和 CGI​​mage)只包含图像数据,没有标签。

当图像选择器选择图像(从库或相机中)时,它会返回 UIImage,而不是 jpeg。这个 UIImage 是从 jpeg 图像数据创建的,但是 jpeg 中的 exif 数据被丢弃了。

这意味着这些数据根本不在 UIImage 中,因此无法访问。

【讨论】:

  • 是否有任何已知的方法来解析数据字节以提取信息?也许不是 API 调用,而是我可以自己滚动的东西?
  • 怕不是,我已经把答案解释清楚了。
  • 这并非完全正确。这是可能的,因为某些应用程序(例如 Mobile Photos 和 PixelPipe)似乎能够管理它。我仍然没有找到任何示例代码。
【解决方案2】:

实际上,我认为选择的答案是错误的。嗯,没有错。它所说的一切都是正确的,但有办法绕过这个限制。

UIImagePickerController 传递一个字典以及它返回的UIImage。其中一个键是UIImagePickerControllerMediaURL,它是“电影的文件系统 URL”。然而,正如here 所指出的,在较新的 iOS 版本中,它也会返回图像的 url。将其与@Jasper 提到的exif library 结合起来,您或许可以从照片中提取地理标签。

我没有尝试过这种方法,但正如@tomtaylor 所提到的,这必须以某种方式成为可能,因为有一些应用程序可以做到这一点。 (例如Lab)。

【讨论】:

  • 当我尝试这个(iOS 4.2)时,它不会返回那个键 - 只是 UIImagePickerControllerMediaType、UIImagePickerControllerOriginalImage 和 UIImagePickerControllerReferenceURL,它是"assets-library://asset/asset.jpg?id=2317&ext=jpg"
  • 很高兴知道...也许它就在 3.2 中?
  • 我可以确认,从已保存的相册中挑选一张照片只会让您返回 Alex 提到的三个键。从相机中挑选时,正如 OP 感兴趣的那样,您既没有得到 UIImagePickerControllerMediaURL 也没有得到 UIImagePickerControllerReferenceURL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多