2014-11-04 54 views
0

我试图创建一个函数来计算基于关闭一个给定的RGB值和色调的给定数量的色调。因此,用户会给出一个rgb值,例如(100,200,150)以及他们想要打印多少色调。然后程序将打印出许多颜色与第一颜色印刷,报错颜色,然后之后渐亮每种颜色直到它到达白色,这是(255,255,255)。找到一个比乘以RGB值获得彩色的色调多用Python

例如: 用户输入:红= 255,绿色= 0,蓝色= 0,和numTints = 5

这将打印:红,亮红,亮红,亮红,白

用户可以输入他们想要的颜色。

我明白,我需要一个常数大于1,直到每个值达到255我需要的是如何找到含量的不同由乘以每个值有助于乘以每个RGB值。

+0

你有什么代码,使远吗?您可以尝试根据您拥有的色彩数量将rgb值分成相等的时间间隔。另外,如果你试图从红色到白色,你将会改变绿色和蓝色值,同时保持红色值不变。 – 2014-11-04 14:15:45

+0

颜色不一定是红色,它可以是任何颜色。我对阴影做了同样的事情,所以只能从基本颜色开始,在RGB中变为黑色或(0,0,0)。这是我用于此的代码。比率=(1 /最大)**(1 /色调) r = round(r * ratio,0) g = round(g * ratio,0) b = round(b * ratio,0) – user2052567 2014-11-04 14:37:53

+0

我需要帮助找到方程式来计算比率,将红色,蓝色和绿色值乘以白色。 (255,255,255) – user2052567 2014-11-04 14:39:51

回答

0

首先,创建一个函数,它接受两个整数,并返回位于均匀它们之间间隔数。然后将该功能应用于您的颜色的每个红色,蓝色和绿色通道。

"""returns a list of length `size` whose elements are evenly distributed between start and end""" 
def interpolate(start, end, size): 
    delta = float(end - start)/(size-1) 
    return [start + i*delta for i in range(size)] 

def interpolate_color(start, end, size): 
    red = interpolate(start[0], end[0], size) 
    green = interpolate(start[1], end[1], size) 
    blue = interpolate(start[2], end[2], size) 
    return zip(red, green, blue) 

start = (100,200,150) 
end = (255,255,255) 
for c in interpolate_color(start, end, 5): 
    print c 

结果:

(100.0, 200.0, 150.0) 
(138.75, 213.75, 176.25) 
(177.5, 227.5, 202.5) 
(216.25, 241.25, 228.75) 
(255.0, 255.0, 255.0)