【问题标题】: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)
    

    【讨论】:

      猜你喜欢
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2014-01-16
      • 1970-01-01
      相关资源
      最近更新 更多