こんにちは、TYと申します。
前回の続きです。
今回は映した映像を画像として端末に保存する「撮影機能」を実装していきたいと思います。
撮影する際のフラッシュや手ぶれ補正などの設定はAVCapturePhotoSettingsクラスを使用します。
// シャッターボタンが押された時 @IBAction func photoshot(_ sender: Any) { let settings = AVCapturePhotoSettings() // フラッシュの設定 settings.flashMode = .auto // カメラの手ぶれ補正 settings.isAutoStillImageStabilizationEnabled = true output.capturePhoto(with: settings, delegate: self) }
撮影した画像のデータを受け取るために、AVCapturePhotoOutputクラスのcapturePhotoメソッドを使用し、AVCapturePhotoCaptureDelegateのphotoOutputメソッド内で撮影した画像データを取得します。
以下のようにAVCapturePhotoCaptureDelegateというdelegateも追加。
class CameraViewController:UIViewController,AVCapturePhotoCaptureDelegate { }
fileDataRepresentationメソッドでデータを生成し、UIImageオブジェクトに変換後、UIImageWriteToSavedPhotosAlbumで画像を写真ライブラリに保存します。
//撮影結果・再撮影・保存ボタンの表示 func photoOutput(_output:AVCapturePhotoOutput,didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) { let imageData = photo.fileDataRepresentation() //型変換 let photo = UIImage(data: imageData!) //写真ライブラリに画像を保存 UIImageWriteToSavedPhotosAlbum(photo, self, nil, nil) }
以上でカメラの基本的な処理を実装しました。次回はカメラを実装する際のプロジェクの設定やコードの改修を実施したいと思います。