新的 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的主要内容,如果未能解决你的问题,请参考以下文章

GPUImage Swift iOS 7

图像处理库GPUImage简单使用

使用 GPUImage 过滤器后无法保存图像

GPUImage原理

GPUImage原理

GPUImage - CVPixelBufferCreate 出错 -6661