使用自定义相机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





