UIImagePickerControllerDelegate从iOS 11中的拾取图像中获取日期

UIImagePickerControllerDelegate从iOS 11中的拾取图像中获取日期,第1张

概述以前的解决方案已被弃用 – 请不要下注或标记为重复 UIImagePickerControllerReferenceURL在iOS 11中已被弃用(即使它仍然在信息字典中返回)并且应该被替换为UIImagePickerControllerPHAsset,但我还没有得到包含该密钥的信息字典.由于一个被弃用而另一个被丢失,是否有一个已知的解决方案用于从拾取图像中提取“采取的日期”? 作为参考,这是从 以前的解决方案已被弃用 – 请不要下注或标记为重复

UIImagePickerControllerReferenceURL在iOS 11中已被弃用(即使它仍然在信息字典中返回)并且应该被替换为UIImagePickerControllerPHAsset,但我还没有得到包含该密钥的信息字典.由于一个被弃用而另一个被丢失,是否有一个已知的解决方案用于从拾取的图像中提取“采取的日期”?

作为参考,这是从库中挑选图像时返回的示例信息字典:

▿ 4 elements  ▿ 0 : 2 elements    - key : "UIImagePickerControllerImageURL"    - value : file:///private/var/mobile/Containers/Data/Application/EE1BA60E-2DC3-47C5-A58D-86498E95C323/tmp/3A025D4C-B378-474B-8A09-017479A3A776.jpeg  ▿ 1 : 2 elements    - key : "UIImagePickerControllerMediaType"    - value : public.image  ▿ 2 : 2 elements    - key : "UIImagePickerControllerReferenceURL"    - value : assets-library://asset/asset.HEIC?ID=537976CD-A550-41C9-9416-92C8072112D7&ext=HEIC  ▿ 3 : 2 elements    - key : "UIImagePickerControllerOriginalimage"    - value : <UIImage: 0x1d04b4760> size {3024,4032} orIEntation 3 scale 1.000000

(请注意,UIImagePickerControllerReferenceURL仍然存在,但已弃用,并且缺少建议的替换UIImagePickerControllerPHAsset.)

如果它存在,获取日期将很简单:

if let asset = info[UIImagePickerControllerPHAsset] as? PHAsset,let resource = PHAssetResource.assetResources(for: asset).first {    let dateTaken = resource.creationDate}

可能是Apple忘了实现UIImagePickerControllerPHAsset吗?关于变通方法的任何想法(不使用弃用的方法)?

解决方法 您可以通过ImageIO框架检查所选照片的​​元数据来获取日期.

但是,PHAsset信息未到达的说法仅仅是虚假的.它到达就好了.你没有显示你的代码,所以谁知道你在做什么?也许问题是你忘了获得用户授权?如果没有用户授权,您当然无法访问PHAsset.您将获得UIImagePickerControllerOriginalimage和UIImagePickerControllerImageURL,这就是全部.

这段代码对我来说很好(假设我们在使用图像选择器控制器之前有必要的用户授权):

func imagePickerController(_ picker: UIImagePickerController,dIDFinishPickingMediawithInfo info: [String : Any]) { //    let asset = info[UIImagePickerControllerPHAsset] as? PHAsset    let url = info[UIImagePickerControllerMediaURL] as? URL    var im = info[UIImagePickerControllerOriginalimage] as? UIImage    if let ed = info[UIImagePickerControllerEditedImage] as? UIImage {        im = ed    }    let live = info[UIImagePickerControllerlivePhoto] as? PHlivePhoto    let imurl = info[UIImagePickerControllerImageURL] as? URL    self.dismiss(animated:true) {        if let style = asset?.playbackStyle { // and so on,works fine            // ....        }    }}
总结

以上是内存溢出为你收集整理的UIImagePickerControllerDelegate从iOS 11中的拾取图像中获取日期全部内容,希望文章能够帮你解决UIImagePickerControllerDelegate从iOS 11中的拾取图像中获取日期所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1063533.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存