7

我正在使用 GPUImage 框架(一些旧版本)来混合两个图像(将边框覆盖添加到某个图像)。在我更新到最新的框架版本后,应用这种混合后,我得到一个空的黑色图像。

我正在使用下一个方法:

- (void)addBorder {
    if (currentBorder != kBorderInitialValue) {
        GPUImageAlphaBlendFilter *blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
        GPUImagePicture *imageToProcess = [[GPUImagePicture alloc] initWithImage:self.imageToWorkWithView.image];
        GPUImagePicture *border = [[GPUImagePicture alloc] initWithImage:self.imageBorder];

        blendFilter.mix = 1.0f;
        [imageToProcess addTarget:blendFilter];
        [border addTarget:blendFilter];

        [imageToProcess processImage];
        self.imageToWorkWithView.image = [blendFilter imageFromCurrentlyProcessedOutput];

        [blendFilter release];
        [imageToProcess release];
        [border release];
    }
}

问题是什么?

4

2 回答 2

11

您忘记处理边框图像。之后[imageToProcess processImage],添加以下行:

[border processImage];

对于要输入混合的两个图像,您必须在将-processImage它们添加到混合过滤器后同时使用它们。我更改了混合过滤器的工作方式以修复一些错误,这就是您现在需要做的事情。

于 2012-07-23T16:19:11.963 回答
7

这是我目前用于将两个图像与 GPUImageAlphaBlendFilter 合并的代码。

GPUImagePicture *mainPicture = [[GPUImagePicture alloc] initWithImage:image];
GPUImagePicture *topPicture = [[GPUImagePicture alloc] initWithImage:blurredImage];

GPUImageAlphaBlendFilter *blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
[blendFilter setMix:0.5];

[mainPicture addTarget:blendFilter];
[topPicture addTarget:blendFilter];

[blendFilter useNextFrameForImageCapture];
[mainPicture processImage];
[topPicture processImage];

UIImage * mergedImage = [blendFilter imageFromCurrentFramebuffer];
于 2015-06-09T11:10:45.537 回答