我有一个带有白色图标和标题的绿色按钮。我正在尝试使用我刚学会的GPUImage库来将绿色更改为蓝色,但将白色保持为白色。这是我的代码:
UIImage *inputImage = [UIImage imageNamed:@"pause-button"];
GPUImageFalseColorFilter *colorSwapFilter = [[GPUImageFalseColorFilter alloc] init];
colorSwapFilter.firstColor = (GPUVector4){0.0f, 0.0f, 1.0f, 1.0f};
colorSwapFilter.secondColor = (GPUVector4){1.0f, 1.0f, 1.0f, 1.0f};
UIImage *filteredImage = [colorSwapFilter imageByFilteringImage:inputImage];
有两个问题:
我是否错误地使用此过滤器?在使用此过滤器之前,是否必须进行一些预处理?
答案 0 :(得分:1)
GPUImageFalseColorFilter可能不是您想要用来改变某些东西的色调的东西。它是Core Image中相同名称的滤镜重新实现,它首先将图像转换为亮度,然后用一种颜色替换白色而用另一种颜色替换黑色。您可以在这些颜色之间获得可变混合,而不是灰度。我目前也不认为它尊重alpha通道。
您可能想要更像GPUImageHueFilter(再次,不确定它是否尊重alpha)或GPUImageLookupFilter。您可能需要构建一个自定义过滤器来定位某个阈值内的颜色(查看色度键控的颜色)并用您给定的颜色替换它。但是,Hue的变化可能会起到作用。