UIImage与CVPixelBuffer互转
UIImage与CVPixelBuffer互转
UIImage转CVPixelBuffer
有两种方式可供选择:
CoreGraphics中的相关函数CoreImage中的相关方法
CoreGraphics
步骤:
- 创建一个
CVPixelBuffer(pixelBuf) - 获取
CVPixelBuffer基址(baseAddress) - 选择一个适当的
CGColorSpace(colorSpace) - 根据
baseAddress和colorSpace,以及其它所需数据,创建一个CGBitmapContext(bitmapCtx) - 将
UIImage中的CGImage绘制到bitmapCtx上 
通过上述步骤,就可以将图像渲染到pixelBuf中。
CoreImage
步骤:
- 创建一个
CVPixelBuffer(pixelBuf) - 创建一个
CIContext(ctx) - 使用
ctx将UIImage中的CIImage渲染到pixelBuf中(- render:toCVPixelBuffer:方法) 
CVPixelBuffer转UIImage
同样存在两种可供选择的方式:
VideoToolbox中的相关函数CoreImage中的相关方法
VideoToolbox
步骤:
- 从
CVPixelBuffer得到CGImage(VTCreateCGImageFromCVPixelBuffer函数) - 由
CGImage创建出UIImage 
CoreImage
步骤:
- 从
CVPixelBuffer得到CIImage(CIImage类方法:+ imageWithCVImageBuffer:与+ imageWithCVPixelBuffer:) - 由
CIImage创建出UIImage