我需要一个函数来根据变量返回 RGBA 值

问题描述

我有一个范围从 -10 到 10 并且不断变化的变量。我想要一个返回 RGBA 值的 python 函数:

红色:接近-10时,
绿色:接近 10 时

我自己想不出办法做到这一点,而且我想过去有人做过类似的事情。

解决方法

您可以使用 HSV 等颜色表示来执行此操作。您可以将 rgb 颜色最大值 (255,0) 和最小值 (0,255,0) 转换为 HSV (0,100%,100%) (120,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)
,

您可以使用此功能代替导入模块:

def rg(num):
    num = 255 * num // 10
    if num > 0:
        return 255 - num,0
    return 255,255 + num,0

print(rg(-10),rg(0),rg(10))

输出:

(255,0) (255,0) (0,0)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...