BLOG

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

こんにちは、TYと申します。
今回はSwift5とiOS12でカメラ機能を実装したいと思います。

Swiftの基本操作はわかってきた。そろそろ踏み込んでもいいのでは?と思い、よく使われるであろう「カメラ」を実装してみようと思う。

ググってみるとカメラを実装できるフレームワークは複数あるらしい。

調査①

UIkit.frameworkのUIImagePickerController

UIImagePickerController

https://developer.apple.com/documentation/uikit/uiimagepickercontroller

これを使えば簡単に写真、動画、編集機能を実装できるらしい。しかし、プレビュー画面の編集はオリジナルに加工できないとある。

今回の実装するカメラは、プレビュー画面をオリジナルにしたいのでこれは不採用。

調査②

AVFoundation.frameworkのAVCaptureStillImageOutput

AVCaptureStillImageOutput

https://developer.apple.com/documentation/avfoundation/avcapturestillimageoutput

これを使えばプレビュー画面に別のViewを重ねたりできるがUIImagePickerControllerと比べて実装が複雑らしい。

複雑なのは嫌だが、汎用性を求めるのであれば仕方あるまい、採用!

使用するフレームワークも決まったので、早速実装してみる。

まずは、フレームワークをインポート

入出力を管理するAVCaptureSessionクラスを使用して、カメラの画質を設定、次に画質の設定はAVcaptureSession.sessionPresetプロパティで実施します。

数々の画質設定が用意されていましたが、今回は高解像度の画像出力ができるphotoを設定しました。

デバイスを管理するAVCaptureDeviceクラスを使用してデバイスの本体の設定を実施します。

ここで入出力データを設定します。

デバイスのカメラの入力を初期化します。設定した情報をAVCaptureDeviceInputクラスを使用し、AVCaptureSessionに追加します。

最後にAVCapturePhotoOutputオブジェクトをAVCaptureSessionに追加します。

ここまでできた!!が、カメラの映像を画面に表示するのはまだまだ手間がいるらしい。

次回はカメラの映像を画面に表示し、シャッターボタンの作成やUIの設定まで行いたいと思います。

BLOGトップへ戻る