-1

在我使用的应用程序中,我的任务是使用PHPickerViewController.

选择后,我需要访问:

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

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

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

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

4

1 回答 1

0

我可以获得的 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)
    }
}
于 2020-08-13T04:27:43.643 回答