Я хочу преобразовать CIImage в UIImage, но не удалось

У меня есть 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.

Что мне теперь делать?

1 ответ

Просто простая строка кода (доступно из IOS 5.0)

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

Другие вопросы по тегам