2016-08-18 15 views
3

У меня есть CIImage с форматом kCVPixelFormatType_420YpCbCr8BiPlanarFullRange (YCC420f или N12), теперь я хочу, чтобы увидеть, что изображение выглядит, так что я преобразовать его в UIImage использовать этот метод:Я хочу, чтобы преобразовать 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, но не для NV12, сообщение об ошибке в консоли:

Render failed because a pixel format YCC420f is not supported. 

BTW, ciimage происходит от CVPixelBufferRef и CVPixelBufferRef происходит от адреса текстуры GL.

Теперь, что мне делать?

+0

использование UIImage * uiImage = [[UIImage alloc] initWithCIImage: ciImage]; нет изображениеWithCGImage: – AleyRobotics

+0

@Yuri такой же проблема. И CIImage-> CGImageRef-> UIImage лучше, imageWithCIImage может возвращать 'nil', при этом иногда не появляется сообщение об ошибке. –

+0

Вид работ ios 7: UIImage * uiImage = [[UIImage alloc] initWithCIImage: ciImage]; – Adeel

ответ

0

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

UIImage * UIImage = [[UIImage Alloc] initWithCIImage: ciImage];

 Смежные вопросы

  • Нет связанных вопросов^_^