新的 GPUImage 无法得到处理的Image
Posted
技术标签:
【中文标题】新的 GPUImage 无法得到处理的Image【英文标题】:New GPUImage cannot get processedImage 【发布时间】:2014-03-30 23:14:13 【问题描述】:我在使用最新的重构时遇到了问题。每次我尝试从过滤器中获取处理后的 UIImage 时,它都是 nil。我用过useNextFrameForImageCapture
,但还是不行。
这是我的代码中的一个 sn-p:
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 始终为零。非常感谢任何帮助!
【问题讨论】:
【参考方案1】:@BradLarson 回答了我的问题:您需要在要从中捕获的过滤器上使用 -useNextFrameForImageCapture,而不是输入图像。它必须告诉过滤器保留它的帧缓冲区。在您的情况下,您需要调用 [filter useNextFrameForImageCapture]。
【讨论】:
以上是关于新的 GPUImage 无法得到处理的Image的主要内容,如果未能解决你的问题,请参考以下文章