我有一个几乎是纯色的图像。它已连接,但纯白色,因此您无法轻易看到它。
我希望能够在运行时动态地为这个图像着色,但我需要在 iOS 6 中做到这一点,而不使用 UIImageRenderingModeAlwaysTemplate。
图像都将从纯白色开始,圆角带有较小的渐变。
到目前为止,我最好的尝试是使用 GPUImage 和 UIImage 上的一个类别
@implementation UIImage (BPAdditions)
- (UIImage *)imageWithColor:(UIColor *)color
{
GPUImageRGBFilter *stillImageFilter = [[GPUImageRGBFilter alloc] init];
CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha =0.0;
[color getRed:&red green:&green blue:&blue alpha:&alpha];
stillImageFilter.red = red;
stillImageFilter.green = green;
stillImageFilter.blue = blue;
GPUImageChromaKeyFilter *stillImageFilter2 = [[GPUImageChromaKeyFilter alloc] init];
[stillImageFilter2 setColorToReplaceRed:0 green:0 blue:0];
stillImageFilter2.thresholdSensitivity = 0.2;
stillImageFilter2.smoothing = 0;
UIImage *img = [stillImageFilter imageByFilteringImage:self];
return [stillImageFilter2 imageByFilteringImage: img];
}
这将是理想的,除非当我使用 RGB 滤镜时,它会将清晰的背景变成黑色。然后用色度滤镜去除它,根据使用的颜色,质量会有所不同。
目标颜色有可能是黑色,在这种情况下,此解决方案将完全失败。