如何从本地路径加载图像ios swift(按路径)

Jac*_*ght 19 image ios nsdocumentdirectory swift

在我的应用程序中,我将图像存储在本地存储中,我正在我的数据库中保存该图像的路径.如何从该路径加载图像?

这是我用来保存图像的代码:

 let myimage : UIImage = UIImage(data: data)!
            let fileManager = NSFileManager.defaultManager()
            let urls = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
            let documentDirectory = urls[0] as NSURL


            print(documentDirectory)
            let currentDate = NSDate()

            let dateFormatter = NSDateFormatter()
            dateFormatter.dateStyle = .NoStyle
            dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
            let convertedDate = dateFormatter.stringFromDate(currentDate)
            let imageURL = documentDirectory.URLByAppendingPathComponent(convertedDate)
            imageUrlPath  = imageURL.absoluteString
            print(imageUrlPath)
            UIImageJPEGRepresentation(myimage,1.0)!.writeToFile(imageUrlPath, atomically: true)
Run Code Online (Sandbox Code Playgroud)

这是我的图像存储的路径

file:///var/mobile/Containers/Data/Application/B2A1EE50-D800-4BB0-B475-6C7F210C913C/Documents/2016-06-01%2021:49:32
Run Code Online (Sandbox Code Playgroud)

这是我试图检索图像,但它没有显示任何东西.

let image : String = person?.valueForKey("image_local_path") as! String
        print(person!.valueForKey("image_local_path")! as! String)
        cell.img_message_music.image = UIImage(contentsOfFile: image)
Run Code Online (Sandbox Code Playgroud)

zsy*_*nko 37

Folder/B2A1EE50- ...每次运行应用程序时都会更改.

../Application/B2A1EE50-D800-4BB0-B475-6C7F210C913C/Documents/..
Run Code Online (Sandbox Code Playgroud)

对我有用的是存储fileName和获取文档文件夹.

斯威夫特3 +

为目录文件夹创建getter

var documentsUrl: URL {
    return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
}
Run Code Online (Sandbox Code Playgroud)

保存图片 :

private func save(image: UIImage) -> String? {
    let fileName = "FileName"
    let fileURL = documentsUrl.appendingPathComponent(fileName)
    if let imageData = UIImageJPEGRepresentation(image, 1.0) {
       try? imageData.write(to: fileURL, options: .atomic)
       return fileName // ----> Save fileName
    }
    print("Error saving image")
    return nil
}
Run Code Online (Sandbox Code Playgroud)

加载图片:

private func load(fileName: String) -> UIImage? {
    let fileURL = documentsUrl.appendingPathComponent(fileName)
    do {
        let imageData = try Data(contentsOf: fileURL)
        return UIImage(data: imageData)
    } catch {
        print("Error loading image : \(error)")
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)


Jim*_*mes 9

你也可以尝试这个.

  1. 检查您的路径是否存在

if NSFileManager.defaultManager().fileExistsAtPath(imageUrlPath) {}

  1. 创建路径的URL

let url = NSURL(string: imageUrlPath)

  1. 为您创建数据URL

let data = NSData(contentsOfURL: url!)

  1. 将网址绑定到您的imageView

imageView.image = UIImage(data: data!)

最终代码:

if NSFileManager.defaultManager().fileExistsAtPath(imageUrlPath) {
    let url = NSURL(string: imageUrlPath)
    let data = NSData(contentsOfURL: url!)
    imageView.image = UIImage(data: data!)
}
Run Code Online (Sandbox Code Playgroud)


Pan*_*gid 5

这段代码对我有用

func getImageFromDir(_ imageName: String) -> UIImage? {

    if let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
        let fileURL = documentsUrl.appendingPathComponent(imageName)
        do {
            let imageData = try Data(contentsOf: fileURL)
            return UIImage(data: imageData)
        } catch {
            print("Not able to load image")
        }
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)


iYo*_*ung 1

absoluteString用。。。来代替path

let myimage : UIImage = UIImage(data: data)!
        let fileManager = NSFileManager.defaultManager()
        let urls = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
        let documentDirectory = urls[0] as NSURL


        print(documentDirectory)
        let currentDate = NSDate()

        let dateFormatter = NSDateFormatter()
        dateFormatter.dateStyle = .NoStyle
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        let convertedDate = dateFormatter.stringFromDate(currentDate)
        let imageURL = documentDirectory.URLByAppendingPathComponent(convertedDate)
        imageUrlPath  = imageURL.path
        print(imageUrlPath)
        UIImageJPEGRepresentation(myimage,1.0)!.writeToFile(imageUrlPath, atomically: true)
Run Code Online (Sandbox Code Playgroud)