jjzjj

ios - UIImagePickerControllerDelegate 从 iOS 11 中选取的图像获取日期

coder 2023-09-04 原文

UIImagePickerControllerReferenceURL 在 iOS 11 中被弃用(尽管它仍然在 info 字典中返回)并且应该被替换为 UIImagePickerControllerPHAsset,但我还没有得到包含该键的 info 字典。由于一个已弃用而另一个已丢失,是否有已知的解决方案可以从选取的图像中提取“拍摄日期”?

作为引用,这是一个示例 info 字典,当从库中选取图像时返回该字典:

▿ 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
}

会不会是苹果忘了实现UIImagePickerControllerPHAsset?关于解决方法的任何想法(不使用已弃用的方法)?

注意可能的重复

我认为 Stack Overflow 上以前的解决方案已被弃用,因此不会使用现代方法回答这个问题。

最佳答案

swift 4.1

我也为此苦苦挣扎了一段时间。事实证明,您只需要用户许可即可访问照片库 - 然后 info 将包含键 UIImagePickerControllerPHAsset 的值。您可以像这样检查和请求访问权限:

let status = PHPhotoLibrary.authorizationStatus()

switch status {
    case .authorized:
    // show your media picker
    case .denied:
    // probably alert the user that they need to grant photo access
    case .notDetermined:
    PHPhotoLibrary.requestAuthorization({status in
        if status == .authorized {
            // show your media picker
        }
    })
    case .restricted:
    // probably alert the user that photo access is restricted
}

然后您像往常一样使用 imagePickerController(_: didFinishPickingMediaWithInfo:) 方法,并且可以访问 UIImagePickerControllerPHAsset

关于ios - UIImagePickerControllerDelegate 从 iOS 11 中选取的图像获取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47316909/

有关ios - UIImagePickerControllerDelegate 从 iOS 11 中选取的图像获取日期的更多相关文章

随机推荐