【问题标题】:I need a function to return RGBA values based on a variable [closed]我需要一个函数来基于变量返回 RGBA 值[关闭]
【发布时间】:2021-05-15 12:31:17
【问题描述】:
我有一个从 -10 到 10 的变量,并且不断变化。我想要一个返回 RGBA 值的 python 函数:
红色:接近 -10 时,
绿色:接近 10 时
我自己想不出办法,我想过去有人做过类似的事情。
【问题讨论】:
标签:
python
colors
rgb
rgba
【解决方案1】:
你可以使用这个函数来代替导入模块:
def rg(num):
num = 255 * num // 10
if num > 0:
return 255 - num, 255, 0
return 255, 255 + num, 0
print(rg(-10), rg(0), rg(10))
输出:
(255, 0, 0) (255, 255, 0) (0, 255, 0)
【解决方案2】:
您可以使用 HSV 之类的颜色表示来执行此操作。您可以将 rgb 颜色最大值 (255, 0, 0) 和最小值 (0, 255, 0) 转换为 HSV (0, 100%, 100%) (120, 100%, 100%)。查看这些,您可以看到只有一个值发生变化,即色调。因此,您可以将您的范围 -10:10 映射到色相 0:120 的范围。这可以使用一个非常简单的映射函数来完成:
def map_values(oldValue):
# this is your range -10:10
OldRange = (10 - -10)
# range we are mapping to 0:120
NewRange = (120 - 0)
return (((oldValue - -10) * NewRange) / OldRange) + 0
现在您有了色调,您可以将其转换为 RGB 值。在colorsys中有一个方便的函数
import colorsys
# we need to divide by 360 because this function
# expects a value from 0.0 to 1.0. H has a range from 0 to 360
my_rgb_color = colorsys.hsv_to_rgb(map_values(your_value) / 360.0, 1.0, 1.0)