我们使用以下代码从缓冲区创建UIImage

let context = CGContext(data: baseAddress, width: frameWidth, height: frameHeight, bitsPerComponent: 8, bytesPerRow: bytesPerRow, space: colorSpace, bitmapInfo: bitmapInfo.rawValue)!

    let cgImage0 =   context.makeImage()
    let uiImage0 =  UIImage(cgImage: cgImage0!)

问题是我们只能使用kCVPixelFormatType_32BGRA格式的AVCaptureVideoDataOutput()创建彩色图像缓冲区,该格式与kCVPixelFormatType_32RGBA最相似

在某些时候,我们需要UIImage,并且需要将缓冲区转换为UIImage,并且由于UIImage是RGBA格式的颜色已经失真了。

我们如何从kCVPixelFormatType_32RGBA格式的缓冲区中获取UIImage。

最佳答案

通过制造

   var bitmapInfo  = CGBitmapInfo.byteOrder32Little.rawValue
    bitmapInfo |= CGImageAlphaInfo.premultipliedFirst.rawValue & CGBitmapInfo.alphaInfoMask.rawValue

代替
   var bitmapInfo  = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)

但是很难从Apple文档中获得此信息。

10-06 09:02