2016-08-09 10 views
1
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) { 

    print("Image Uploaded") 

    self.dismissViewControllerAnimated(true, completion: nil) 

    filterimage.image = image 
} 

@IBAction func importImage(sender: AnyObject) { 
    let image = UIImagePickerController() 
    image.delegate = self 
    image.sourceType = UIImagePickerControllerSourceType.Camera 

    image.allowsEditing = false 

    self.presentViewController(image, animated: true, completion: nil) 
} 

關閉應用程序後,再次打開它,圖像將消失。當我再次打開應用程序時,如何才能使圖像保留在那裏。我知道如何用NSUserDefaults與文字做到這一點,但你如何用圖像做到這一點?除非你改變它,你怎麼能讓這張照片永遠留在那裏?

+1

你可以寫一個圖像數據到一個文檔目錄。 –

+1

@TejaNandamuri不要將圖像保存在'NSUserDefaults'中。將圖像寫入文件。如果有的話,你可以將保存文件的文件名存儲在'NSUserDefaults'中。 – rmaddy

回答

0

editingInfo字典會告訴您所選圖片的源URL(UIImagePickerControllerReferenceURL)。保存這些信息,以便稍後再次使用它來獲取相同的圖像。

+0

該解決方案不處理用戶從照片庫中刪除照片。將圖像本地保存到應用程序會更好,而不僅僅是它的URL。 – rmaddy

+0

@rmaddy正如你所說,不在用戶默認情況下。 - 但我不認爲我的解決方案是無效的。如果我們應該顯示來自照片庫的圖像,而不是顯示它,那麼可能是正確的。 – matt

1

你會希望將其保存到文件目錄,如下所示:

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) { 
    print("Image Uploaded") 
    saveImageToDirectory(image) 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

func saveImageToDirectory(image : UIImage) { 
    if let data = UIImageJPEGRepresentation(image, 1.0) { 
     let filename = getDocumentsDirectory().stringByAppendingPathComponent("myCameraImage.png") 
     data.writeToFile(filename, atomically: true) 
    } 
} 

func getDocumentsDirectory() -> NSString { 
    let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) 
    let documentsDirectory = paths[0] 
    return documentsDirectory 
} 

//To retrieve the image... 
func getImage() { 
    let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString 
    let getImagePath = paths.stringByAppendingPathComponent("myCameraImage.jpg") 
    let image = UIImage(contentsOfFile: getImagePath) 
    print(image) 
} 

以信譽Hacking With Swift