我们使用以下代码从缓冲区创建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文档中获得此信息。