UIImage与CVPixelBuffer互转

UIImage与CVPixelBuffer互转

UIImage转CVPixelBuffer

有两种方式可供选择:

  1. CoreGraphics中的相关函数
  2. CoreImage中的相关方法

CoreGraphics

步骤:

  1. 创建一个CVPixelBuffer(pixelBuf)
  2. 获取CVPixelBuffer基址(baseAddress)
  3. 选择一个适当的CGColorSpace(colorSpace)
  4. 根据baseAddress和colorSpace,以及其它所需数据,创建一个CGBitmapContext(bitmapCtx)
  5. 将UIImage中的CGImage绘制到bitmapCtx上

通过上述步骤,就可以将图像渲染到pixelBuf中。

CoreImage

步骤:

  1. 创建一个CVPixelBuffer(pixelBuf)
  2. 创建一个CIContext(ctx)
  3. 使用ctx将UIImage中的CIImage渲染到pixelBuf中(- render:toCVPixelBuffer:方法)

CVPixelBuffer转UIImage

同样存在两种可供选择的方式:

  1. VideoToolbox中的相关函数
  2. CoreImage中的相关方法

VideoToolbox

步骤:

  1. 从CVPixelBuffer得到CGImage(VTCreateCGImageFromCVPixelBuffer函数)
  2. 由CGImage创建出UIImage

CoreImage

步骤:

  1. 从CVPixelBuffer得到CIImage(CIImage类方法:+ imageWithCVImageBuffer:与+ imageWithCVPixelBuffer:)
  2. 由CIImage创建出UIImage

UIImage与CVPixelBuffer互转
https://daniate.github.io/2018/06/23/UIImage与CVPixelBuffer互转/
作者
Daniate
发布于
2018年6月23日
许可协议