4

尝试使用 Phasset 从 UIImage 添加位置:

// image is a variable like so: image: UIImage

var newAsset = PHAssetChangeRequest.creationRequestForAssetFromImage(image)
newAsset.location = CLLocation(latitude: coordinate.latitude, coordinate.longitude)

这段代码显然有效 - >将新资产保存到具有良好坐标的照片库中。我可以在图书馆本身看到它。

但是当我使用 exif 工具和类似工具时,大多数时候,GPS 字典是空的,就好像没有设置位置一样。(另外,我注意到 GPS 信息不是 exif 格式)所以我猜,位置信息也在其他地方......

那么 PHAsset 的 location 属性有什么问题?如何正确设置位置?

4

1 回答 1

7

照片在其自己的数据库中跟踪位置元数据,与存储在每个照片文件中的 EXIF 元数据分开。当您(作为 Photos API 的客户端)或用户创建/添加新资产时,Photos 会从文件中读取 EXIF 位置数据并将其数据库中的位置设置为匹配。然而,除此之外,Photos API 不会努力保持这些同步。

如果要更新文件中的 EXIF 元数据,则需要自己进行。(Image I/O 可以帮助解决这个问题 - 请参阅此答案。)然后,将整个文件(而不仅仅是UIImage从中创建的文件)添加到照片使用creationRequestForAssetFromImageAtFileURL:PHAssetCreationRequestiOS 9 中的新内容。

于 2015-07-27T23:35:52.657 回答