使用自定义相机Swift 3拍照

在Swift 2.3中,我使用以下代码在自定义相机中拍照:

 func didPressTakePhoto(){

if let videoConnection = stillImageOutput!.connection(withMediaType: AVMediaTypeVideo) {

stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: { (sampleBuffer, error) -> Void in

if sampleBuffer != nil {

let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)

let dataProvider = CGDataProviderCreateWithCFData(imageData)

let cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, CGColorRenderingIntent.RenderingIntentDefault)

let image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Right)

self.captureImageView.image = image

}

})

}

}

但是他的话:

stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection,

completionHandler: { (sampleBuffer, error) -> Void in

显示此错误:

类型“ AVCapturePhotoOutput”的值没有成员“

captureStillImageAsynchronouslyFromConnection”

我尝试解决问题,但是我总是收到越来越多的错误,所以这就是我发布原始代码的原因。

有人知道如何使我的代码再次起作用吗?

谢谢。

回答:

多亏了Sharpkits,我找到了解决方案(此代码对我有用):

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

if let error = error {

print(error.localizedDescription)

}

if let sampleBuffer = photoSampleBuffer, let previewBuffer = previewPhotoSampleBuffer,

let dataImage = AVCapturePhotoOutput.jpegPhotoDataRepresentation(forJPEGSampleBuffer: sampleBuffer, previewPhotoSampleBuffer: previewBuffer) {

let imageData = AVCapturePhotoOutput.jpegPhotoDataRepresentation(forJPEGSampleBuffer: sampleBuffer, previewPhotoSampleBuffer: nil)

let dataProvider = CGDataProvider(data: imageData as! CFData)

let cgImageRef = CGImage(jpegDataProviderSource: dataProvider!, decode: nil, shouldInterpolate: true, intent: CGColorRenderingIntent.absoluteColorimetric)

let image = UIImage(cgImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.right)

let cropedImage = self.cropToSquare(image: image)

let newImage = self.scaleImageWith(cropedImage, and: CGSize(width: 600, height: 600))

print(UIScreen.main.bounds.width)

self.tempImageView.image = newImage

self.tempImageView.isHidden = false

} else {

}

}

以上是 使用自定义相机Swift 3拍照 的全部内容, 来源链接: utcz.com/qa/411753.html

回到顶部