【问题标题】:How to obtain photo data/metadata after being picked in PHPickerViewController?在 PHPickerViewController 中被选中后如何获取照片数据/元数据?
【发布时间】:2020-07-20 21:56:36
【问题描述】:

在我开发的应用程序中,我的任务是使用PHPickerViewController 向用户展示他们的设备照片。

选择后,我需要访问:

  1. 原始图像数据
  2. 图片的文件名
  3. 图片的创建日期

如果我可以完全访问用户的照片,那么使用 PHAsset 很容易 - 我可以使用包含照片标识符的 PHPickerViewController 结果值来查询 PhotoKit 以获取 PHAssets。但是,不能保证我具有完全访问权限。此外,如果用户已授予无访问权限或受限访问权限,并且受限选择不包括在PHPickerViewController 中选择的照片,我将无法查询它们。 (我试过了,果然查询的结果是nil,这是有道理的)。

我可以获得的UIImage 只是原始图像数据的代理(缺少 exif 数据等),因此对于我的应用程序的用户案例来说,这还不够。假设有一个数据项目提供者,我仍然需要获取文件名和创建日期等信息。

那么,有没有办法获取这些信息?

【问题讨论】:

    标签: ios photokit phpickerviewcontroller


    【解决方案1】:

    我可以获得的 UIImage 只是原始图像数据的代理(缺少 exif 数据等),因此对于我的应用所具有的用户案例来说是不够的

    回到 NSItemProvider 并要求它提供图像的数据表示。现在以通常的方式提取元数据。

    // prov is the item provider
    prov.loadDataRepresentation(forTypeIdentifier: UTType.image.identifier) { data, err in
        if let data = data {
            let src = CGImageSourceCreateWithData(data as CFData, nil)!
            let d = CGImageSourceCopyPropertiesAtIndex(src,0,nil) as! [AnyHashable:Any]
            print("metadata", d)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      相关资源
      最近更新 更多