来自AVFoundation的UIImagePNG表示返回nil

我有一个捕获输出委托方法:

func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) { let filter = CIFilter(name: "CIColorControls") let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) let cameraImage = CIImage(cvPixelBuffer: pixelBuffer!) filter?.setValue(cameraImage, forKey: kCIInputImageKey) filter?.setValue(0.0, forKey: kCIInputSaturationKey) let filteredImage = UIImage(ciImage: filter!.value(forKey: kCIOutputImageKey) as! CIImage!, scale: 1.0, orientation: UIImageOrientation.right) DispatchQueue.main.async { self.cameraView.image = filteredImage } } 

在那里我添加filter到我的实时预览图像。 但是,如果我尝试从这个方法的图像创buildNSData:UIImagePNGRepresentation()它返回零,我不知道为什么。 如果我使用CameraViewController所有的作品完美,所以我认为这个问题是在AVFoundation。 有小费吗?

问题是, UIImage(ciImage:)不会将CIImage转换为普通的UIImage。 您需要渲染到由CGImage支持的普通UIImage。