Как создать UIImage с отформатированным буфером kCVPixelFormatType_32BGRA, используя Swift - PullRequest
0 голосов
/ 25 июня 2018

Мы создаем 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!) 

Проблема в том, что мы можем создать буфер цветного изображения, используя AVCaptureVideoDataOutput () только с форматом kCVPixelFormatType_32BGRA, который наиболее похож на формат kCVPixelFormatType_32RGBA

В какой-то момент нам понадобится UIImage, и нам нужно было преобразовать буфер в UIImage, а из-за того, что UIImage - это форматированные цвета RGBA, стали искаженными.

Как мы можем получить UIImage из буфера в формате kCVPixelFormatType_32RGBA.

1 Ответ

0 голосов
/ 25 июня 2018

Делая

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

вместо

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

Но получить это из документа Apple очень сложно.

...