こんにちは、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)
}
以上でカメラの基本的な処理を実装しました。次回はカメラを実装する際のプロジェクの設定やコードの改修を実施したいと思います。