BLOG

Swiftでカメラを実装したい③

こんにちは、TYと申します。

前回の続きです。

今回は映した映像を画像として端末に保存する「撮影機能」を実装していきたいと思います。

撮影設定

撮影する際のフラッシュや手ぶれ補正などの設定はAVCapturePhotoSettingsクラスを使用します。

// シャッターボタンが押された時
@IBAction func photoshot(_ sender: Any) {
    let settings = AVCapturePhotoSettings()
    // フラッシュの設定
    settings.flashMode = .auto
    // カメラの手ぶれ補正
    settings.isAutoStillImageStabilizationEnabled = true
    output.capturePhoto(with: settings, delegate: self)
}

撮影した画像の保存

撮影した画像のデータを受け取るために、AVCapturePhotoOutputクラスのcapturePhotoメソッドを使用し、AVCapturePhotoCaptureDelegatephotoOutputメソッド内で撮影した画像データを取得します。

以下のように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) 
 }

以上でカメラの基本的な処理を実装しました。次回はカメラを実装する際のプロジェクの設定やコードの改修を実施したいと思います。

BLOGトップへ戻る