如何使用 Swift/SwiftUI 从 ImagePicker 获取选定的图像文件名

Posted

技术标签:

【中文标题】如何使用 Swift/SwiftUI 从 ImagePicker 获取选定的图像文件名【英文标题】:How to get selected image file name from ImagePicker using Swift/SwiftUI 【发布时间】:2021-05-13 15:31:21 【问题描述】:

我正在通过 UIImagePickerController 将 ImagePicker 与 SwiftUI 一起使用。它可以选择一个图像。但我也想知道原始图像文件名。有没有办法做到这一点?

我已经尝试过使用以下代码:

if let url = info[UIImagePickerController.InfoKey.imageURL] as? URL 

  imagePicker.fileName = url.lastPathComponent

  imagePicker.fileType = url.pathExtension


但上面的代码给出了临时图像文件名。

【问题讨论】:

【参考方案1】:

如果需要访问选中的UIImage,可以使用originalImage属性:

if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage 
   ...

【讨论】:

【参考方案2】:

我试过了,但我无法从 UIImage 获取文件名(url)。

下面的代码暂时解决了问题。

      if let url = info[UIImagePickerController.InfoKey.referenceURL] as? URL 
            let assets = PHAsset.fetchAssets(withALAssetURLs: [url], options: nil)
            if let firstAsset = assets.firstObject,
            let firstResource = PHAssetResource.assetResources(for: firstAsset).first 
                imagePicker.fileName = firstResource.originalFilename
             else 
                imagePicker.fileName = "IMG_random_string"
            
         else 
            imagePicker.fileName = "IMG_random_string"
        

但是这里的 referenceURL 和 fetchAssets 是贬值的。我尝试使用 phpickerViewController,但再次找不到如何从中获取选定的图像文件名。

谢谢! :))

【讨论】:

以上是关于如何使用 Swift/SwiftUI 从 ImagePicker 获取选定的图像文件名的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 5 /SwiftUI 将 AVAudioRecorder 文件上传到 Firebase 存储?

Swift:SwiftUI中MapKit的使用体验

如何在swift / SwiftUI中为滑动手势设置菜单栏图标的操作

Swift / SwiftUI:如何检查环境 /binding var 是不是为空字符串(.isEmpty 出现构建错误)

如何构造值以使所有视图都可以在 Swift/SwiftUI 中访问其值?

Swift/SwiftUI - 删除键盘上方的空间