2016-02-28 41 views
0

我被UIImagepicker从画廊节省数据库返回路径从UIImagePickerViewController给出的路径从swift中加载图像窗体画廊?

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!)") 

其中,路径看起来像

/用户/ kshitijghule /库/开发商/ CoreSimulator /设备/ 3AC7B500-E980-4A00-BC32 -34FA3C7DDE8A /数据/容器/数据/应用/ 838FB5A1-4448-46C9-8BEC-2E939668B97D /文档/ 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)! 

如何解决这个问题越来越崩溃?它会在设备上工作?

回答

0

从图库或相机中的文档目录中保存图像。从数据库

 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) 
     } 
0

如果你在文档目录存储存储图像仅在DB

在检索时的图像名称附加与图片名称当前文档目录路径就像你在保存时

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)是导致此问题

希望改变这可能会解决您的问题

+0

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)") } 

加载图像我用这条道路仅在节省时间,但仍然有崩溃。 –

+0

@AvijitNagare你存储了哪条路径?我告诉你仅存储图像名称而不是完整路径,上面的代码用于检索, 可能在将路径转换为url时出错,请检查NSURL是否已正确创建,然后将其传递给NSData,并检查是否在每次运行时,路径都是相同的(应用程序文件夹号码)或它正在更改 – HardikDG

0

我已经回答了类似的问题here。您只需将这些路径保存到数据库,并从数据库路径中检索这些图像。

+0

我想要图库中的图像。他们已经在设备上保存了。我真的需要保存在文档目录中吗? –

+0

您在代码中显示的路径不是资产库,它是文档目录的文件目录,'“/ Users/kshitijghule/Library/Developer/CoreSimulator/Devices/3AC7B500-E980-4A00-BC32-34FA3C7DDE8A/data/Containers/Data/Application/838FB5A1-4448-46C9-8BEC-2E939668B97D/Documents/asset.JPG' – Rajat

+0

你是正确的,所以我可以得到资产库路径吗?或者我需要将图像保存在文档目录中吗? –