繁体   English   中英

如何使用 Swift 中的 imagePickerController 从相机获取文件名

[英]How to get filename from camera using imagePickerController in Swift

我是 Swift 的新手,使用相机时无法获取文件名。 我的代码是这样的

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            
            if let url = info[UIImagePickerController.InfoKey.imageURL] as? URL {
                self.fileName = url.lastPathComponent
                self.ImageFormat = url.pathExtension
                
                let fullNameArr = fileName.components(separatedBy: ".")
                let firstName = fullNameArr[0] //First
                ImagePathforServer = firstName
                
            }
            
            print(self.fileName)
            print(self.ImageFormat)
            
            imagePicker.dismiss(animated: true, completion: nil)
            
            DispatchQueue.global(qos: .background).async {
                let base64Str = "\(self.convertImageToBase64(image: image))"
                self.base64forImageUpload = base64Str

            }
            
        } else {
            print("There was an error picking the image")
        }
    }

我可以从库中获取文件名,但不能从相机中获取。

从库中,图像保存在照片/磁盘中。 但是,当您从中拍摄照片时,它不会保存在任何地方,直到您将其保存在某个地方。 您可以将该图像保存到 Documents 文件夹以获取路径,也可以将其保存在照片中。

将图像保存在文档目录中的示例:

import Foundation
import UIKit

extension UIImage {

func saveToDocuments(filename:String) {
    let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
    let fileURL = documentsDirectory.appendingPathComponent(filename)
    if let data = self.jpegData(compressionQuality: 1.0) {
        do {
            try data.write(to: fileURL)
        } catch {
            print("error saving file to documents:", error)
        }
    }
}

}

//从目录中获取图片

 public static func loadImageFromDocumentDirectory(fileName: String) -> UIImage? {

    let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!;
    let fileURL = documentsUrl.appendingPathComponent(fileName)
    do {
        let imageData = try Data(contentsOf: fileURL)
        return UIImage(data: imageData)
    } catch {}
    return nil
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM