我想将图片转换为黑白。我尝试了以下代码,但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];
}
答案 0 :(得分:4)
每the recent changes in the way that GPUImage handles framebuffers,您需要添加一行
[conversionFilter useNextFrameForImageCapture];
之前
[gpuImage processImage];
在上面的代码中。在处理完图像并从中捕获结果之前,您需要让框架知道不要为最后一个过滤器回收帧缓冲区。