来自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
        }
    }

在这里我给我的实时预览图像添加了滤镜。但是如果我尝试通过这个方法从图像创建NSData: UIImagePNGRepresentation()它返回nil,我不知道为什么。如果我使用CameraViewController所有工作完美,所以我认为问题是在AVFoundation。任何建议吗?

问题是UIImage(ciImage:)不将CIImage转换为正常的UIImage。你需要在CGImage的支持下渲染成一个普通的UIImage。

最新更新