从文档目录swift获取图像

Lea*_*nin 35 ios swift nsdocumentdirectory-ios8

假设我使用此代码将图像保存到文档directroy

let nsDocumentDirectory = NSSearchPathDirectory.DocumentDirectory
let nsUserDomainMask = NSSearchPathDomainMask.UserDomainMask
if let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true) {
if paths.count > 0 {
    if let dirPath = paths[0] as? String {
        let readPath = dirPath.stringByAppendingPathComponent("Image.png")
        let image = UIImage(named: readPath)
        let writePath = dirPath.stringByAppendingPathComponent("Image2.png") 
        UIImagePNGRepresentation(image).writeToFile(writePath, atomically: true)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

那我怎么回头呢?牢记在iOS8中,确切的路径经常变化

Mid*_* MP 102

您正在运行时查找文档目录路径以写入图像,为了将其读回,您可以使用确切的逻辑:

Swift 3和Swift 4.2

let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
let nsUserDomainMask    = FileManager.SearchPathDomainMask.userDomainMask
let paths               = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
if let dirPath          = paths.first
{
   let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent("Image2.png")
   let image    = UIImage(contentsOfFile: imageURL.path)
   // Do whatever you want with the image
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特2

let nsDocumentDirectory = NSSearchPathDirectory.DocumentDirectory
let nsUserDomainMask    = NSSearchPathDomainMask.UserDomainMask
if let paths            = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
{
     if paths.count > 0
     {
         if let dirPath   = paths[0] as? String
         {
             let readPath = dirPath.stringByAppendingPathComponent("Image2.png")
             let image    = UIImage(contentsOfFile: readPath)
             // Do whatever you want with the image
         }
     }
}
Run Code Online (Sandbox Code Playgroud)


Rei*_*eid 9

更好的扩展.

extension URL {
    static var documentsDirectory: URL {
        let documentsDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
        return try! documentsDirectory.asURL()
    }

    static func urlInDocumentsDirectory(with filename: String) -> URL {
        return documentsDirectory.appendingPathComponent(filename)
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样使用:

let path = URL.urlInDocumentsDirectory(with: filename).path
let image = UIImage(contentsOfFile: path)
Run Code Online (Sandbox Code Playgroud)


小智 6

斯威夫特2

如果要从Swift 2中的文档目录中获取文件:

let path: String? = NSBundle.mainBundle().pathForResource("imageName", ofType: "png", inDirectory: "DirectoryName/Images")
let imageFromPath = UIImage(contentsOfFile: path!)!
self.myImage.image = imageFromPath
Run Code Online (Sandbox Code Playgroud)

希望能帮到别人


Har*_*ngh 5

从文件夹或目录中加载多个图像。-迅捷4

这是要显示的图像,我们想要在下面的代码中实现什么。 在此处输入图片说明

这是从documents目录中的文件夹中查找多个图像的代码。我已经写了一种方法来做同样的事情。

在代码中,我们传递“文件夹名称”(即Red)并获取该目录的内容。作为回报,我们得到了图像名称数组。

    static func loadImagesFromAlbum(folderName:String) -> [String]{

    let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
    let nsUserDomainMask    = FileManager.SearchPathDomainMask.userDomainMask
    let paths               = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
    var theItems = [String]()
    if let dirPath          = paths.first
    {
        let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent(folderName)

        do {
            theItems = try FileManager.default.contentsOfDirectory(atPath: imageURL.path)
            return theItems
        } catch let error as NSError {
            print(error.localizedDescription)
            return theItems
        }
    }
    return theItems
}
Run Code Online (Sandbox Code Playgroud)

这是给定代码的结果。 在此处输入图片说明

希望能帮助到你。

谢谢