如何从UIImagePickerController获取图像文件名?

问题描述 投票:4回答:6

我没有从照片库中获取图像名称。这里的任何人都知道获取图像名称的正确方法吗?

注意:PHAsset.fetchAssets(withALAssetURLs: [imageURL], options: nil)这是不推荐使用的。

只有斯威夫特

谢谢

ios iphone swift uiimagepickercontroller
6个回答
7
投票

我找到了一个方法

if let asset = info["UIImagePickerControllerPHAsset"] as? PHAsset{
            if let fileName = asset.value(forKey: "filename") as? String{
            print(fileName)
            }
        }

这将返回照片库中的实际文件名。


5
投票

你的意思是图像文件名?如果是这样,这应该对你有帮助。在你的UIImagePickerControllerDelegate中:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    guard let fileUrl = info[UIImagePickerControllerImageURL] as? URL else { return }
    print(fileUrl.lastPathComponent)
}

3
投票

尝试使用以下代码

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let asset = info[UIImagePickerControllerPHAsset] as? PHAsset {
        if let fileName = (asset.value(forKey: "filename")) as? String {
          print(\(fileName))
        }
    }

    // Other Stuff
}

1
投票

如果您没有授予访问照片库的权限,UIImagePickerControllerPHAsset就是nil。操作系统不会自动询问,仍然会让你访问该文件(我不知道这背后的逻辑是什么!)但是PHAsset是信息词典将是零!


1
投票

适用于iOS 12的更新,Swift 4,

这将直接为您提供文件名和文件扩展名

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

    guard let fileUrl = info[UIImagePickerController.InfoKey.imageURL] as? URL else { return }
    print(fileUrl.lastPathComponent) // get file Name
    print(fileUrl.pathExtension)     // get file extension
    dismiss(animated: true, completion: nil)
}

0
投票

请试试这个。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let asset = info[UIImagePickerControllerPHAsset] as? PHAsset {
        let assetResources = PHAssetResource.assetResources(for: asset)
        print(assetResources.first!.originalFilename)
    }

    dismiss(animated: true, completion: nil)
} 
© www.soinside.com 2019 - 2024. All rights reserved.