3

我有一个格式为kCVPixelFormatType_420YpCbCr8BiPlanarFullRange(YCC420fN12) 的 CIImage,现在我想看看图像是什么样的,所以我将其转换为 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,但不是 for时NV12,它可以正常工作,控制台中的错误消息:

Render failed because a pixel format YCC420f is not supported.

顺便说一句,ciimage 来自 CVPixelBufferRef,而 CVPixelBufferRef 来自 GL 纹理的地址。

现在,我该怎么办?

4

1 回答 1

0

只需一行简单的代码(适用于 IOS 5.0)

UIImage *uiImage = [[UIImage alloc] initWithCIImage:ciImage];

于 2017-07-12T06:23:38.700 回答