簡體   English   中英

如何獲取 PHAsset 的原始(EXIF?)創建日期/時間?

[英]How to get original (EXIF?) creation date/time of PHAsset?

PHAsset有一個creationDate屬性,它以 UTC PHAsset給出資產的創建日期。

如果我在 UTC-6 晚上 10:52 拍攝照片,則creationDate屬性是 03:52 AM。

我應該如何知道拍攝照片的“真實”時間? creationDate屬性未提供時區信息,因此我無法將其調整回晚上 10:52 - 我不知道在調整時區是哪個時區...

我知道我可以使用PHImageManager requestImageDataForAsset獲得 EXIF 創建日期(或至少嘗試),並使用那里返回的數據來獲取實際上是晚上PHImageManager requestImageDataForAsset的 EXIF 創建日期,但這會導致照片的性能非常慢在 iCloud 中(我需要用戶庫中所有資產的創建日期值)。 此外,我無法弄清楚如何獲取視頻的 EXIF 創建日期。

我也知道有一些方法可以從CLLocation獲取時區,我可以用它來調整creationDate - 但這些方法要么是速率有限的,要么是不准確的

是否有另一種更簡單的方法來獲取此原始創建日期值?

回顧一下:

  • 照片拍攝於 UTC-6 晚上 10:52
  • PHAsset 創建日期是 UTC 時間凌晨 3:52
  • 我想知道如何獲得 UTC-6 日期/時間晚上 10:52。

您可以嘗試使用PHContentEditingInput iCloud 圖像也可能會很慢,但值得嘗試,因為我認為沒有其他方法可以做到這一點:(

這種方法不需要ImageIO導入並且需要更少的代碼所以也許它會比PHImageManager requestImageDataForAsset好一些

可以使用這個PHAsset分類快速試用: https : //github.com/zakkhoyt/PHAsset-Utility

可以獲取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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM