我有一个CIImage,格式为kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
(YCC420f
或N12
),现在我想看一下这张图片的样子,所以我使用了以下方法将其转换为UIImage:
CIImage *ciImage = [CIImage imageWithCVPixelBuffer:new_buffer];
CIContext *temporaryContext = [CIContext contextWithOptions:nil];
CGImageRef videoImage = [temporaryContext
createCGImage:ciImage
fromRect:CGRectMake(0, 0,
CVPixelBufferGetWidth(new_buffer),
CVPixelBufferGetHeight(new_buffer))];
UIImage *uiImage = [UIImage imageWithCGImage:videoImage];
当图像格式为 BGRA
时,一切正常,但对于 NV12
则不行,在控制台中会显示错误信息:
Render failed because a pixel format YCC420f is not supported.
顺便提一下,ciimage来自于一个CVPixelBufferRef,而这个CVPixelBufferRef又是由GL纹理的地址生成的。
那么,我该怎么办呢?
nil
而没有错误信息。 - Klein Mioke