2014-04-10 114 views
1

我想圖像轉換成黑白。我已經嘗試了下面的代碼,但imageFromCurrentFramebufferWithOrientation總是返回零。imageFromCurrentFramebufferWithOrientation返回nil GPUImagePicture?

-(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]; 

}

回答

4

the recent changes in the way that GPUImage handles framebuffers,您需要在上面的代碼之前

[gpuImage processImage]; 

正確添加行

[conversionFilter useNextFrameForImageCapture]; 

。您需要讓框架知道不會爲上一次過濾器回收幀緩衝區,直到處理完圖像並從中捕獲結果爲止。

+0

Thnkas爲你的反應,但現在我只得到白色部分。沒有什麼。 – Mahavir