我使用的是Swift 3,Xcode 8.2。
我在这个主题上找到的很多教程似乎总是在Swift 2中。我已经创建了一个自定义的摄像头视图,我正在尝试从中捕获一张照片。
我在下面设置了@IBAction
功能。变量session_output
为AVCapturePhotoOutput
:
@IBAction func shutterButtonPressed() {
session_output.capturePhoto(with: AVCapturePhotoSettings.init(format: [AVVideoCodecKey : AVVideoCodecJPEG]), delegate: <#T##AVCapturePhotoCaptureDelegate#>)
}
我不知道要放在delegate
字段中的内容以及如何在捕获后从缓冲区中读取照片。在这种情况下,Swift 2和3之间的区别是如此鲜明,以至于我甚至无法通过它来解决这个问题,这在我遵循大多数Swift 2教程时已经相当成功。
非常感谢任何帮助。
答案 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)
}
}