[iPhone] Camera撮影, AVCapturePhotoOutput

前に UIImagePickerController でカメラを扱いましたが、AVCapturePhotoOutputを使うとより細かく設定可能です。
iOS9まではAVCaptureStillImageOutputでしたが非推奨となり、代わりがこのAVCapturePhotoOutput です。
iOS11から jpegPhotoDataRepresentation が非推奨となり、fileDataRepresentation を使うようになりました。またPermissionも少し変わりました。

画面タップでシャッターを切る例です。
 

 

Swift 5.1
Xcode 11.3.1

 

AVCapturePhotoOutput

 

この記事でのカバー範囲と注意点です。

  1. 実機で試す
    • simulatorではデバッグできません、実機で試してください。
  2. Info.plistの編集
    • 以下を設定しないとエラーになります。
    • NSCameraUsageDescription
    • NSPhotoLibraryAddUsageDescription
    • NSPhotoLibraryUsageDescription(アプリによっては必要かもしれません)
    • UIImagePickerController
  3. Dual cameraの設定はここではやりません。
  4. Live Photosの設定はここではやりません
    • ファイルが増大するので

以下は Appleのサンプルコード を適当にはしょって作りました。ので、本当はもっと細かく設定しないと売り物にはなりませんので。ここでは基本的なところだけです。

Tap を受け取るために UIGestureRecognizerDelegateをdelegateで設定しています。
AVCapturePhotoCaptureDelegateというdelegateも追加されました。

ViewController.swift

 
レイヤーをViewに追加するところを外すとプレビュー無しの撮影になります

position: .back
position: .front
で背面、前面カメラを切り替えられます
 

関連

Ref:
AVCapturePhotoOutput
Sample Code
シミュレータによるテストとデバッグ – Apple Developer


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

  • このエントリーをはてなブックマークに追加

フォローする