UIImage与CVPixelBuffer互转

UIImage与CVPixelBuffer互转

UIImage转CVPixelBuffer

有两种方式可供选择:

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

CoreGraphics

步骤:

  1. 创建一个CVPixelBufferpixelBuf
  2. 获取CVPixelBuffer基址(baseAddress
  3. 选择一个适当的CGColorSpacecolorSpace
  4. 根据baseAddresscolorSpace,以及其它所需数据,创建一个CGBitmapContextbitmapCtx
  5. UIImage中的CGImage绘制到bitmapCtx

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

CoreImage

步骤:

  1. 创建一个CVPixelBufferpixelBuf
  2. 创建一个CIContextctx
  3. 使用ctxUIImage中的CIImage渲染到pixelBuf中(- render:toCVPixelBuffer:方法)

CVPixelBuffer转UIImage

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

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

VideoToolbox

步骤:

  1. CVPixelBuffer得到CGImageVTCreateCGImageFromCVPixelBuffer函数)
  2. CGImage创建出UIImage

CoreImage

步骤:

  1. CVPixelBuffer得到CIImageCIImage类方法:+ imageWithCVImageBuffer:+ imageWithCVPixelBuffer:
  2. CIImage创建出UIImage

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