2014-03-30 35 views
0

我遇到了最新的重構問題。每次我嘗試從過濾器中獲取已處理的UIImage時,都是零。我已經使用useNextFrameForImageCapture,但它仍然不起作用。 這是我的代碼片段:新的GPUImage無法處理圖像

self.imageView = [[GPUImageView alloc] initWithFrame:CGRectMake(0, 
              0, 
              self.view.frame.size.width, 
              self.view.frame.size.height)]; 
staticPicture = [[GPUImagePicture alloc] initWithImage:img 
            smoothlyScaleOutput:YES]; 
filter = [[GPUImageToneCurveFilter alloc] initWithACV:@"cool"]; 
[staticPicture addTarget:filter]; 
[filter addTarget:self.imageView]; 

GPUImageRotationMode imageViewRotationMode = kGPUImageNoRotation; 
switch (staticPictureOriginalOrientation) { 
    case UIImageOrientationLeft: 
     imageViewRotationMode = kGPUImageRotateLeft; 
     break; 
    case UIImageOrientationRight: 
     imageViewRotationMode = kGPUImageRotateRight; 
     break; 
    case UIImageOrientationDown: 
     imageViewRotationMode = kGPUImageRotate180; 
     break; 
    default: 
     imageViewRotationMode = kGPUImageNoRotation; 
     break; 
} 

// seems like atIndex is ignored by GPUImageView... 
[self.imageView setInputRotation:imageViewRotationMode atIndex:0]; 

[staticPicture useNextFrameForImageCapture]; 
[staticPicture processImage]; 
UIImage *processedImage = [filter imageFromCurrentFramebufferWithOrientation:staticPictureOriginalOrientation]; 

processedImage始終爲零。將不勝感激任何幫助!

回答

0

@BradLarson回答了我的問題:您需要在要從中捕獲的過濾器上使用-useNextFrameForImageCapture,而不是輸入圖像。它必須告訴過濾器保持其幀緩衝區。在你的情況下,你需要調用[filter useNextFrameForImageCapture]。