我有一个介于0和1之间的数字,我想将其转换为蓝色比例的相应RGB分量。 因此,当数字为0时,我想获得[255,255,255](即白色),而如果数字为1,我想获得[0,0,255](蓝色)。
你知道一个公式或如何用Python实现它吗? 很高兴知道如何将0-1数字转换为其他颜色标度,例如绿色(在某种意义上,0再次对应于[255,255,255],而1对应于[0,255,0])。
提前感谢您提供的任何帮助!
答案 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)