OGeek|极客世界-中国程序员成长平台

标题: ios - 将图像保存到文件目录 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 22:07
标题: ios - 将图像保存到文件目录

我正在尝试使用文件目录保存图像,但我无法在没有错误提示的情况下保存图像

No Such Folder.

这是我的代码,我不知道哪里出错了

// Write image to directory
func writeImageToPath(_ path: String, image: UIImage) {
    print("Write image to directory")

    // get the documents directory url
    let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

    let folderURL = documentsURL.appendingPathComponent("upload")

    if !FileManager.default.fileExists(atPath: folderURL.path) {
        do {
            try FileManager.default.createDirectory(atPath: folderURL.path, withIntermediateDirectories: true, attributes: nil)
        }
        catch {}
    }

    let fileURL = folderURL.appendingPathComponent(path)
    let data = UIImageJPEGRepresentation(image, 0.9)
    do {
        try data!.write(to: fileURL)
    }
    catch {}

}

// load image from directory
func loadImageFromPath(_ path: String) -> UIImage? {

    let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

    let folderURL = documentsURL.appendingPathComponent("upload")

    let fileURL = folderURL.appendingPathComponent(path)

    if FileManager.default.fileExists(atPath: fileURL.path) {
        //Get Image And upload in server
        print("fileURL.path \(fileURL.path)")

        do{
            let data = try Data.init(contentsOf: fileURL)
            let image = UIImage(data: data)
            return image
        }catch{
            print("error getting image")
        }
    } else {
        print("No image in directory")
    }

    return nil
}

如何正确保存和加载目录中的图像?



Best Answer-推荐答案


罗,

我在大多数项目中都遵循以下代码片段:

要将图像保存在文件夹中,请使用以下函数:

func addImageInFolder(image : UIImage,filename:String){
    let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
    let folderURL = documentsURL.appendingPathComponent("upload")
    if !FileManager.default.fileExists(atPath: folderURL.path) {
        do {
            try FileManager.default.createDirectory(atPath: folderURL.path, withIntermediateDirectories: true, attributes: nil)
        }
        catch {}
    }
    let fileURL = folderURL.appendingPathComponent(filename)
    let data = UIImageJPEGRepresentation(image, 0.9)
    do {
        try data!.write(to: fileURL)
    }
    catch {}
}

使用以下功能从存储的文件夹中删除图像:

let fileURL = documentsURL.appendingPathComponent("upload/\(filename ?? "")")

            if FileManager.default.fileExists(atPath: fileURL.absoluteString){
                do{
                    try FileManager.default.removeItem(at: fileURL)
                }catch{
                    print("\(sigStr ?? "") delete file delete error")
                }

            }

从文件夹中获取图片:

let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
                //TODO: -Get dateTime For get image URL-
                let fileURL = documentsURL.appendingPathComponent("upload/\(fileName)")
                if FileManager.default.fileExists(atPath: fileURL.path) {
                    //Get Image And upload in server
                    print("fileURL.path \(fileURL.path)")

                    do{
                        let data = try Data.init(contentsOf: fileURL)
                        imageView.image = UIImage(data: data)
                    }catch{

                    }
                }

关于ios - 将图像保存到文件目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54545869/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4