从 swift 中的图库从 UIImagePickerViewController 给定的路径加载图像?

Load image form Gallery in swift from path given by UIImagePickerViewController?

我正在数据库 return 中通过图库中的 UIImagepicker 保存路径

 let imageURL = info[UIImagePickerControllerReferenceURL] as! NSURL
            let imageName = imageURL.lastPathComponent
            let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first! as String

            //let localPath = documentDirectory.stringByAppendingPathComponent(imageName!)

            let imagePath = String("\(documentDirectory)/\(imageName!)")

路径看起来像

/Users/kshitijghule/Library/Developer/CoreSimulator/Devices/3AC7B500-E980-4A00-BC32-34FA3C7DDE8A/data/Containers/Data/Application/838FB5A1-4448-46C9-8BEC-2E939668B97D/Documents/asset.JPG

现在我想从这个路径加载这个图像。

i used this code 


   let url = NSURL(string:"/Users/kshitijghule/Library/Developer/CoreSimulator/Devices/3AC7B500-E980-4A00-BC32-34FA3C7DDE8A/data/Containers/Data/Application/838FB5A1-4448-46C9-8BEC-2E939668B97D/Documents/asset.JPG")!//path from database but mention static 
     let imageData = NSData(contentsOfURL:url)!   
   cell?.petImageView.image = UIImage(data: imageData)

但是我在排队时遇到了崩溃

let imageData = NSData(contentsOfURL:url)! 

如何解决这个问题?它可以在设备上运行吗?

如果您将图像存储在文档目录中,则只在数据库中存储图像名称

在检索时,将当前文档目录路径附加到您的图像名称,就像您在保存时所做的那样

let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first! as String

//let localPath = documentDirectory.stringByAppendingPathComponent(imageName!)
//imageName which you have stored in the db at retrieval time
let imagePath = String("\(documentDirectory)/\(imageName!)")

let url = NSURL(string:imagePath)
let imageData = NSData(contentsOfURL:url)!

因为我最后也有这种类型的问题如果发现模拟器的应用程序编号(838FB5A1-4448-46C9-8BEC-2E939668B97D)是导致问题的更改

希望这可以解决您的问题

我已经回答了一个类似的问题。你只需要将这些路径保存到你的数据库中,然后从数据库路径中你可以检索这些图像。

将从相册或相机中获取的图像保存在文档目录中。

 func origionalImage(origionalImage: UIImage!, editedImage: UIImage!, userInfo info: [NSObject : AnyObject]!) {

            let imageData = NSData(data:UIImagePNGRepresentation(origionalImage)!)
            let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
            let docs: String = paths[0]

            let imageName = self.randomStringWithLength(6) as String
            //imageName can save in sqlite to load image later
            let fullPath = String("\(docs)/\(imageName).png")
             print(fullPath)
            let result = imageData.writeToFile(fullPath, atomically: true)
            print("FILE WRITTEN SUCCESS=>:\(result)")
}

从数据库加载图像

        let tempDBObject = self.petListArray[indexPath.row] as! Database
        cell?.petName.text = tempDBObject.Hname
        //Doc Path
        let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first! as String
        let imagePath = String("\(documentDirectory)/\(tempDBObject.Hpath!)")
        if imagePath == "" {
        }else{
           cell?.petImageView.image = UIImage(contentsOfFile: imagePath)
        }