2017-05-20 16 views
1

main.storyboardにはUIImageViewとボタンがあります。カメラでファイルシステムに取り込んだイメージウィッチを保存したい。しかし、私は再び私のアプリをロードすると、このイメージは消えた。私が間違っていたことを教えてください? これは私のコードです:ファイルシステムに画像を保存

import UIKit 

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 


    @IBAction func useCamera(_ sender: UIButton) { 

     let picker = UIImagePickerController() 
     picker.sourceType = .camera 

     self.present(picker, animated: true, completion: nil) 
     picker.delegate = self 
    } 

    @IBOutlet weak var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

     imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage 
     picker.dismiss(animated: true, completion: nil) 

     if imageView.image == UIImage(named: "example.jpg") { 
      if let data = UIImageJPEGRepresentation(imageView.image!, 0.8) { 
       let filename = getDocumentsDirectory().appendingPathComponent("copy.png") 
       try? data.write(to: filename) 
      } 
     } 
    } 

    func getDocumentsDirectory() -> URL { 
     let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) 
     let documentsDirectory = paths[0] 
     return documentsDirectory 
    } 
} 

答えて

0

あなたは間違ってやっているまさに、私は知りません。私はあなたのコードをテストしていません。これは動作する保存ルーチンです。現在アプリストアにあるアプリでテストされています。

func save(image: UIImage, with fileName: String, and imageName: String?) { 

    let documentsDirectory = FileManager().urls(for: .documentDirectory, in: .userDomainMask).first 
    let imageStore = documentsDirectory?.appendingPathComponent(fileName) 
    let imageData = UIImagePNGRepresentation(image) 

    do { 
     try imageData?.write(to: imageStore!) 
    } catch { 
     print("Couldn't write the image to disk.") 
    } 
}