まずカメラの映像をUIViewに写し、その部分をスクリーンショットしてUIImage
にします。
そして別のViewControllerにその画像をuser defaultを利用して渡したいと考えています。
ですが、画像が渡せていないのか、スクリーンショットがうまくできていないのか
遷移先のViewControllerで画像を表示させることができません。
エラーは出ていません。
ViewController
swift
1 //画像send 2 let defaults = UserDefaults.standard 3 var capturedImage: UIImage! 4 5 //画像キャプチャー 6 func getScreenShot(windowFrame: CGRect) -> UIImage { 7 8 UIGraphicsBeginImageContextWithOptions(windowFrame.size, false, 0.0) 9 10 self.view.drawHierarchy(in: self.view.bounds, afterScreenUpdates: true) 11 //let context: CGContext = UIGraphicsGetCurrentContext()! 12 //self.view.layer.render(in: context) 13 capturedImage = UIGraphicsGetImageFromCurrentImageContext()! 14 UIGraphicsEndImageContext() 15 16 return capturedImage 17 } 18 //savebutton 19 @IBAction func saveButton(_ sender: Any) { 20 capturedImage = getScreenShot(windowFrame: self.cameraView.bounds) 21 defaults.UIImageToData(image: capturedImage, forKey: "image") 22 // sendSaveImage() 23 } 24} 25 extension UserDefaults { 26 // 保存したいUIImage, 保存するUserDefaults, Keyを取得 27 func UIImageToData(image: UIImage, forKey: String) { 28 // UIImageをData型へ変換 29 let nsdata = image.pngData() 30 // UserDefaultsへ保存 31 self.set(nsdata, forKey: forKey) 32 } 33 // 参照するUserDefaults, Keyを取得, UIImageを返す 34 func getImageData(forKey: String) -> UIImage { 35 // UserDefaultsからKeyを基にData型を参照 36 let data = self.data(forKey: forKey) 37 // UIImage型へ変換 38 let returnImage = UIImage(data: data!) 39 // UIImageを返す 40 return returnImage! 41 } 42 }
ViewController2
@IBOutlet weak var cameraView: UIImageView! //画像取得 let defaults = UserDefaults.standard override func viewDidLoad() { super.viewDidLoad() // self.view.backgroundColor = UIColor.init(red: 230/255, green: 255/255, blue: 230/255, alpha: 90/100) capturedImage = defaults.getImageData(forKey: "image") let rect = cameraView.frame imageView = UIImageView(frame:rect) imageView.contentMode = .scaleAspectFit imageView.image = capturedImage imageView.center = self.cameraView.center self.cameraView.addSubview(imageView) } @IBAction func saveButton(_ sender: Any) { let image = mergeImage(windowFrame: cameraView.frame) UIImageWriteToSavedPhotosAlbum(image,self,#selector(self.didFinishSavingImage(_:didFinishSavingWithError:contextInfo:)),nil) } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。