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