UIImage与CVPixelBuffer互转

@Daniate  June 23, 2018

UIImage与CVPixelBuffer互转

本文首发于Daniate的个人网站,文章链接:https://daniate.com/2018/06/23/123.html

所谓的“互转”,不过就是图像相关数据的转化、转移。

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

知识共享许可协议
本作品由Daniate采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。


评论已关闭