基于0-500之间的Int值计算2个RGB值之间的颜色

时间:2018-02-20 22:59:02

标签: python python-3.x pygame

我不知道这是否适合问这个问题,如果是的话,好的,如果没有,也许我可以被引导到正确的地方? 无论如何,我试图采用元组形式的RGB值的2个用户输入。然后,给定0到500之间的整数值,我想计算一个中间RGB元组。因此,一个低得多的整数值将导致RGB元组更接近FIRST用户给定的RGB元组,并且更高的整数值将导致元组更接近用户给定的第二个RGB元组。也就是说,我想要一个最终的RGB元组,它位于两个用户给定的RGB元组之间的某个位置,这些元组根据0-500范围内的整数值而变化。但是,我似乎无法理解使这项工作成为必要的数学/逻辑!如果这是一个错误的地方,我道歉。否则,提前谢谢你!

1 个答案:

答案 0 :(得分:4)

一种简单的方法是在第一种和第二种颜色之间的线上找到RGB空间中的一个点。

进一步简化,对于每个颜色分量,找到它们之间的值,与用户指定的值成比例。

例如,如果用户指定125,则距离为1/4(125/500)。如果第一个值是1而第二个值是100,则25是从1到100的1/4。

first_color = (1,10,240)
second_color = (100, 100, 200)

distance = 125  # Out of 500

result_color = tuple(int(c1 + distance * (c2-c1)/500.)
                     for c1, c2 in zip(first_color, second_color))
print(result_color)

结果:

$ python x.py 
(25, 32, 230)

这将始终给出结果;选择的颜色是否正确是另一回事。