ios - programming - La representación UIImagePNG de AVFoundation devuelve nil
xcode (1)
Esta pregunta ya tiene una respuesta aquí:
Tengo un método de delegado de salida de captura:
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
}
}
donde agrego filtro a mi imagen de vista previa en vivo. Pero si intento crear NSData a partir de la imagen con este método: UIImagePNGRepresentation () devuelve nulo y no tengo idea de por qué. Si utilizo CameraViewController, todo funciona perfectamente, así que creo que el problema está en AVFoundation. ¿Algun consejo?
El problema es que UIImage(ciImage:)
no convierte un CIImage a un UIImage normal. Necesitas renderizar en un UIImage normal respaldado por un CGImage.