imageFromCurrentFramebufferWithOrientation返回nil GPUImagePicture?

时间:2014-04-10 16:04:47

标签: ios gpuimage

我想将图片转换为黑白。我尝试了以下代码,但imageFromCurrentFramebufferWithOrientation总是返回nil。

-(UIImage *)convertImageToBlackAndWhite:(UIImage *)image{
GPUImagePicture *gpuImage = [[GPUImagePicture alloc] initWithImage:image];
GPUImageSobelEdgeDetectionFilter *edgeFilter = [[GPUImageSobelEdgeDetectionFilter alloc] init];

GPUImageColorMatrixFilter *conversionFilter = [[GPUImageColorMatrixFilter alloc] init];
conversionFilter.colorMatrix = (GPUMatrix4x4){
    {0.0, 0.0, 0.0, 1.0},
    {0.0, 0.0, 0.0, 1.0},
    {0.0, 0.0, 0.0, 1.0},
    {1.0,0.0,0.0,0.0},
};

[gpuImage addTarget:edgeFilter];
[edgeFilter addTarget:conversionFilter];
[gpuImage processImage];
NSLog(@"%@",[conversionFilter imageFromCurrentFramebufferWithOrientation:0]);
return [conversionFilter imageFromCurrentFramebufferWithOrientation:0];

}

1 个答案:

答案 0 :(得分:4)

the recent changes in the way that GPUImage handles framebuffers,您需要添加一行

[conversionFilter useNextFrameForImageCapture];

之前

[gpuImage processImage];

在上面的代码中。在处理完图像并从中捕获结果之前,您需要让框架知道不要为最后一个过滤器回收帧缓冲区。