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