如何获得PHAsset的原始(EXIF?)创建日期/时间?

时间:2017-06-19 15:55:08

标签: ios phasset photosframework

PHAsset具有creationDate属性,以UTC格式提供资产的创建日期。

如果我在UTC-6下午10:52拍摄照片,creationDate属性是03:52 AM。

我怎么知道' true'拍照的时间? creationDate属性没有提供时区信息,因此我无法将其调整为晚上10:52 - 我不知道调整时的时区...

我知道我可以使用PHImageManager requestImageDataForAsset获取EXIF创建日期(或至少尝试)并使用返回的数据获取EXIF创建日期,实际上是晚上10:52,但这会导致非常当照片在iCloud中时性能变慢(我需要用户库中所有资产的创建日期值)。此外,我无法弄清楚如何获得视频的EXIF创建日期。

我也知道有一些方法可以从CLLocation获取时区,我可以用它来调整creationDate - 但这些方法要么是速率限制的,要么是/或者不准确

还有另一种更简单的方法来获得这个原始的创建日期值吗?

回顾一下:

  • 照片拍摄时间为UTC-6的10:52 PM
  • PHAsset创建日期为UTC时间上午03:52
  • 我想知道如何在UTC时间晚上10:52获得日期/时间。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用PHContentEditingInput。 对于iCloud图像来说也可能会很慢,但值得尝试,因为我认为还有其他方法可以做到这一点:(

此方法不需要ImageIO导入,需要的代码更少,因此可能会比PHImageManager requestImageDataForAsset

更好一些

您可以使用此PHAsset类别快速尝试: https://github.com/zakkhoyt/PHAsset-Utility

答案 1 :(得分:0)

可以获取exif详细信息如下:

let options = PHContentEditingInputRequestOptions()

asset.requestContentEditingInput(with: options) { input, _ in
    guard let url = input?.fullSizeImageURL else { return }
    guard let image = CIImage(contentsOf: url) else { return }
    guard let exif = image.properties["{Exif}"] as? [String: Any] else { return }

    print(exif["DateTimeOriginal"] ?? "")
    print(exif["SubsecTimeDigitized"] ?? "")
}

打印:

<块引用>

2021:01:04 11:47:07

<块引用>

177