将0-1数转换为RGB蓝色(Python)

时间:2014-01-16 10:21:10

标签: python colors

我有一个介于0和1之间的数字,我想将其转换为蓝色比例的相应RGB分量。 因此,当数字为0时,我想获得[255,255,255](即白色),而如果数字为1,我想获得[0,0,255](蓝色)。

你知道一个公式或如何用Python实现它吗? 很高兴知道如何将0-1数字转换为其他颜色标度,例如绿色(在某种意义上,0再次对应于[255,255,255],而1对应于[0,255,0])。

提前感谢您提供的任何帮助!

3 个答案:

答案 0 :(得分:3)

这是一个奇怪的“比例”,因为它从白色变为蓝色,而不是从黑色([0,0,0])变为蓝色。

无论如何,它只是一个线性插值:

def make_blue(alpha):
  invalpha = 1 - alpha
  scaled = int(255 * invalpha)
  return [scaled, scaled, 255]

如何将其扩展到其他颜色组件应该是显而易见的。

另请参阅this answer了解两种颜色混合的一般问题。在你的情况下,其中一种颜色是白色,另一种颜色是蓝色,但你也想知道红色和绿色。

答案 1 :(得分:3)

def green(brightness):
    brightness = round(255 * brightness) # convert from 0.0-1.0 to 0-255
    return [255 - brightness, 255, 255 - brightness]

def blue(brightness):
    brightness = round(255 * brightness) # convert from 0.0-1.0 to 0-255
    return [255 - brightness, 255 - brightness, 255]

# etc., green(1.0) -> [0, 255, 0]

答案 2 :(得分:0)

使用HSL color space获取正确的值。使用Hue定义正确的颜色,对于蓝色,例如使用“0.6”的值。饱和度可以是1的最大值,并使用您的数字来控制亮度。 0表示黑色,0.5表示颜色,1表示白色。所以我们只使用0.5到1的范围。定义正确的HSL颜色后,将其转换为RGB color space。 全力以赴

import colorsys 
colorsys.hls_to_rgb(0.6, 1, YOURNUMBER * 0.5 + 0.5)