iOS10:与CaptureStillImageAsynchronouslyFromConnection等效的AVCapturePhotoOutput是什么?

时间:2016-09-23 23:09:30

标签: avfoundation ios10

AVCapturePhotoOutput是不推荐使用的AVCaptureStillImageOutput库,它允许从iOS 10中的视频连接中捕获静态图像。

1 个答案:

答案 0 :(得分:4)

它不是AVCaptureStillImageOutput的简单替代品。

检查the reference of AVCapturePhotoOutput

特别是,您可能需要阅读概述中的这一部分:

  
      
  1. 通过将照片设置对象传递给capturePhoto(with:delegate :)方法以及委托对象来捕获图像   实现AVCapturePhotoCaptureDelegate协议。照片   捕获输出然后调用您的代理通知您重要   捕获过程中的事件。
  2.   

Apple的示例代码中包含实际代码示例: AVCam-iOS

请参阅CameraViewController.swift

消化性地,你需要两件事,AVCapturePhotoSettings的实例和符合AVCapturePhotoCaptureDelegate的实例。然后调用capturePhoto(with:delegate:)的{​​{1}}方法。

AVCapturePhotoOutput

示例代码会有一些您可能不需要的无关功能。您可以通过删除它们来简化它。

(您没有指定语言标记,但上面的示例代码包含Objective-C版本。)

使用这种委托方法,您可以获取图像,RAW或Live Photo也存在类似的方法。

let photoSettings = AVCapturePhotoSettings()
//setup `photoSettings`
//...
//create an instance conforming to `AVCapturePhotoCaptureDelegate`
let photoCaptureDelegate = PhotoCaptureDelegate(with: photoSettings,...)
//`AVCapturePhotoCaptureDelegate` can be a complex object, so in the sample code, implemented in a separate file as `PhotoCaptureDelegate`.
//You need to keep strong reference to the delegate instance while capturing in progress.
self.photoOutput.capturePhoto(with: photoSettings, delegate: photoCaptureDelegate)