【问题标题】:How to get selected image file name from ImagePicker using Swift/SwiftUI如何使用 Swift/SwiftUI 从 ImagePicker 获取选定的图像文件名
【发布时间】: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
}
但上面的代码给出了临时图像文件名。
【问题讨论】:
标签:
ios
swift
swiftui
imagepicker
【解决方案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,但再次找不到如何从中获取选定的图像文件名。
谢谢! :))