あらかじめ画像の入った変数takedphotoを用意しておき,その変数に撮影した画像stillImageをしまいたいのですが,変数の中身がデフォルトの画像から変化しません。
コードのどこに間違いがあるのかわからず困惑しております。
どなたかよろしくお願いいたします。
swift
1import UIKit 2import Foundation 3import AVFoundation 4 5class CameraViewController: UIViewController, AVCaptureVideoDataOutputSampleBufferDelegate,UIGestureRecognizerDelegate { 6 7 //UI部品の関連付け 8 @IBOutlet weak var SSLabel: UILabel! 9 @IBOutlet weak var ssSlider: UISlider! 10 @IBOutlet weak var previewView: UIView! 11 @IBOutlet weak var photoView: UIImageView! 12 13 //シャッタースピードごとのパラメータ値を判断するための変数 14 var param = 0 15 //画像受け渡し用の変数 16 var takedphoto: UIImage = #imageLiteral(resourceName: "IMG_4776") 17..... 18// シャッターボタンで実行する 19 @IBAction func takePhoto(_ sender: Any) { 20 let captureSetting = AVCapturePhotoSettings() 21 captureSetting.flashMode = .off 22 captureSetting.isAutoStillImageStabilizationEnabled = true 23 captureSetting.isHighResolutionPhotoEnabled = false 24 // キャプチャのイメージ処理はデリゲートに任せる 25 photoOutput.capturePhoto(with: captureSetting, delegate: self) 26 27 } 28 29... 30}
↓stillImageはExtensionの中です。
swift
1//デリゲート部分を拡張する 2extension CameraViewController:AVCapturePhotoCaptureDelegate{ 3 // 映像をキャプチャする 4 func capture(_ captureOutput: AVCapturePhotoOutput, 5 didFinishProcessingPhotoSampleBuffer photoSampleBuffer: CMSampleBuffer?, 6 previewPhotoSampleBuffer: CMSampleBuffer?, 7 resolvedSettings: AVCaptureResolvedPhotoSettings, 8 bracketSettings: AVCaptureBracketedStillImageSettings?, 9 error: Error?) { 10 11 12 //バッファからjpegのデータを取り出す 13 let photoData = AVCapturePhotoOutput.jpegPhotoDataRepresentation(forJPEGSampleBuffer: photoSampleBuffer!, previewPhotoSampleBuffer: previewPhotoSampleBuffer) 14 //photoDataがnil出ない時UIImageに変換する 15 if let data = photoData { 16 if let stillImage = UIImage(data: data) { 17 //アルバムに追加する 18 UIImageWriteToSavedPhotosAlbum(stillImage, self, nil, nil) 19 //画像の向きの修正 20 let pickedImage = stillImage.fixedOrientation() 21 photoView.image = pickedImage 22 23 //画像選択とFeuを出すためのアラートを作成 24 let alert = UIAlertController(title: nil, message: "この画像を使用しますか?", preferredStyle: .alert) 25 //アラートにボタンをつける 26 alert.addAction(UIAlertAction(title: "YES", style: .default, handler: { action in 27 //画面をFeu算出用の画面に切り替える 28 let storyboard: UIStoryboard = self.storyboard! 29 let nextView = storyboard.instantiateViewController(withIdentifier: "next") as! NextViewController 30 self.present(nextView, animated: true, completion: nil) 31 })) 32 alert.addAction(UIAlertAction(title: "NO", style: .cancel, handler: { action in 33 34 })) 35 //アラートを表示 36 self.present(alert, animated: true, completion: nil) 37 38 39 40 } 41 } 42 } 43} 44
あなたの回答
tips
プレビュー