Swift 3 - 在自定义相机视图上捕捉照片

时间:2017-03-02 04:08:30

标签: ios swift swift3 avfoundation

我使用的是Swift 3,Xcode 8.2。

我在这个主题上找到的很多教程似乎总是在Swift 2中。我已经创建了一个自定义的摄像头视图,我正在尝试从中捕获一张照片。

我在下面设置了@IBAction功能。变量session_outputAVCapturePhotoOutput

@IBAction func shutterButtonPressed() {
    session_output.capturePhoto(with: AVCapturePhotoSettings.init(format: [AVVideoCodecKey : AVVideoCodecJPEG]), delegate: <#T##AVCapturePhotoCaptureDelegate#>)
}

我不知道要放在delegate字段中的内容以及如何在捕获后从缓冲区中读取照片。在这种情况下,Swift 2和3之间的区别是如此鲜明,以至于我甚至无法通过它来解决这个问题,这在我遵循大多数Swift 2教程时已经相当成功。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

将委托设置为self并使用此委托AVCapturePhotoCaptureDelegate

您可以从代表下方获取拍摄的图像

func capture(_ captureOutput: AVCapturePhotoOutput, didFinishProcessingPhotoSampleBuffer photoSampleBuffer: CMSampleBuffer?, previewPhotoSampleBuffer: CMSampleBuffer?, resolvedSettings: AVCaptureResolvedPhotoSettings, bracketSettings: AVCaptureBracketedStillImageSettings?, error: NSError?) {

    if let sampleBuffer = photoSampleBuffer, let previewBuffer = previewPhotoSampleBuffer, let dataImage = AVCapturePhotoOutput.jpegPhotoDataRepresentation(forJPEGSampleBuffer: sampleBuffer, previewPhotoSampleBuffer: previewBuffer) {
      print(image: UIImage(data: dataImage).size)
    }

}