从photoLibrary获取图像的元数据

时间:2020-05-11 09:17:21

标签: ios swift uiimagepickercontroller

我需要从我通过UIImagePickerController拾取的图像中获取metaData。 这是我的代码:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        let image = info[UIImagePickerController.InfoKey.originalImage] as! UIImage
        let metaData = info[UIImagePickerController.InfoKey.mediaMetadata] as? [AnyHashable: Any]
        print(metaData)
        picker.dismiss(animated: true, completion: nil)
    }

当我选择以.camera作为源的图像时,它工作正常。但是当我使用.photoLibrary作为源时,则metaData为nil。我已经阅读了其他问题并尝试了

 let asset = info[.phAsset] as? PHAsset
 print(asset?.creationDate ?? "None")
 print(asset?.location ?? "None")

但这也返回nil。我想问题的根源是,信息字典从.photoLibrary中选择时仅返回4个键:

UIImagePickerControllerOriginalImage
UIImagePickerControllerMediaType
UIImagePickerControllerImageURL
UIImagePickerControllerReferenceURL

如果有人能告诉我我的错误在哪里,那真是太棒了。 预先感谢!

1 个答案:

答案 0 :(得分:0)

我有同样的问题。如果用户未首先授予对图片库的访问权限,则info [.phAsset]将返回nil。

Apple的语录:“访问照片库总是需要用户的明确许可。您的应用程序第一次使用PHAsset,PHCollection,PHAssetCollection或PHCollectionList方法从照片库中获取内容时……”

因此,在显示图像选择器之前,您必须调用PHPhotoLibrary.requestAuthorization {...}。

如果用户拒绝该请求,则info [.phAsset]也将为零!

相关问题