我想动态地将红色图像重新着色为用户想要的任何颜色(黑色和白色除外)。这将允许我减少图形艺术家必须做的工作量。通常我通过应用iOS色调偏移过滤器来做到这一点。这需要输入0-1.0范围内的数字来指定色调应该移动多少。
这是我的色调偏移控制当前的样子:
我试图通过允许用户选择" final"来尝试简化流程。颜色而不是输入色调偏移数字。
对于示例:
我有一个红色的基本图像,用户希望这个图像以蓝色重新着色。用户将选择蓝色,代码将计算从红色到蓝色的色调偏移偏移,然后将色调偏移滤镜应用于红色图像,生成蓝色图像。
-(float)hueShiftFromColor:(UIColor*)originalColor toDesiredColor:(UIColor*)desiredColor;
- 或 - 如果我可以使用我的代码在某个点采样像素并找到它的颜色,那么只需要所需的颜色:
-(void)applyHueShiftFilterToBaseImage:(UIImage*)baseImage desiredColor:(UIColor*)desiredColor;
如何计算两种颜色之间的色调偏移差异(假设饱和度和亮度与原始颜色保持一致)?
答案 0 :(得分:1)
查看方法
- (BOOL)getHue:(CGFloat *)hue
saturation:(CGFloat *)saturation
brightness:(CGFloat *)brightness
alpha:(CGFloat *)alpha
所以你可以这样做:
CGFloat hue1;
CGFloat hue2;
然后:
[color1 getHue:&hue1 saturation:nil brightness:nil alpha:nil];
[color2 getHue:&hue2 saturation:nil brightness:nil alpha:nil];
现在您可以获得2个色调值之间的差异。
NSLog(@"hue 1 = %f; hue 2 = %f", hue1, hue2);
NSLog(@"hue shift = %f", hue1 - hue2);
这些是我使用redColor
和blueColor
形成UIKit所获得的值:
hue 1 = 1.000000; hue 2 = 0.666667
hue shift = 0.333333
希望它有所帮助。