[iPhone] Camera撮影, AVCapturePhotoOutput

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

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

 

Swift 4.0
Xcode 9.0

 

AVCapturePhotoOutput

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

  1. 実機で試す
    • simulatorではデバッグできません、実機で試してください。
      the Camera app is available only on hardware devices and cannot be replicated in the simulator

      Simulator User Guide
      と当然のように言っていますが、「Androidの emulator」ではPCのカメラを使ってできますよ、Appleさん..

  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


ページのトップへ戻る

シェアする

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

フォローする