我正在尝试将3个滤镜应用于图像。
一个值为常数的rgbFilter,一个亮度滤波器和一个饱和滤波器,两者都应该能够被修改,图像应该更新。
我遵循了here的建议。
我使用IB设置了一个UIView并将其类设置为GPUImageView。由于某种原因,图像没有显示。
我的步骤如下:
self.gpuImagePicture = [[GPUImagePicture alloc] initWithImage:image];
[self.gpuImagePicture addTarget:self.brightnessFilter];
[self.brightnessFilter addTarget:self.contrastFilter];
[self.contrastFilter addTarget:self.imageView];
然后我调用它来设置rgb过滤器上的常量值
[self setRGBFilterValues]
我在此之前设置过滤器使用:
- (void) setupFilters
{
self.brightnessFilter = [[GPUImageBrightnessFilter alloc] init];
self.contrastFilter = [[GPUImageContrastFilter alloc] init];
self.rgbFilter = [[GPUImageRGBFilter alloc] init];
}
我错过了一个步骤,或者为什么图像只显示什么?
答案 0 :(得分:5)
你错过了一步。您需要在GPUImagePicture实例上调用-processImage
以使其通过过滤器链传播。
您还需要在更改过滤器链中的值并希望更新最终输出时随时调用此方法。
答案 1 :(得分:1)
我第一次使用这个GPUImage库时,花了太长时间才弄清楚如何简单地将多个滤镜应用于单个图像。 OP提供的link确实有助于解释为什么API相对复杂(一个原因:您必须指定应用过滤器的顺序)。
以下是我应用两个过滤器的代码:
asc_id