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
- 但这些方法要么是速率限制的,要么是/或者不准确
还有另一种更简单的方法来获得这个原始的创建日期值吗?
回顾一下:
答案 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