【问题标题】:How to map a range of numbers to RGB in Python如何在 Python 中将一系列数字映射到 RGB
【发布时间】:2019-08-07 18:45:44
【问题描述】:

我想将 0-3 范围内的数字映射到 rgb 颜色。

我看过这样的帖子:Map a range of values (e.g. [0,255]) to a range of colours (e.g. rainbow: [red,blue]) in JavaScript,但我不知道如何将其转换为 python 并在我的情况下使用它。

我希望输出是 0 到 3 之间特定数字的 rgb 值。感谢任何帮助。

【问题讨论】:

    标签: python colors


    【解决方案1】:

    你可以将你链接的帖子中的this answer转换成python:

    import math
    
    def num_to_rgb(val, max_val=3):
        i = (val * 255 / max_val);
        r = round(math.sin(0.024 * i + 0) * 127 + 128);
        g = round(math.sin(0.024 * i + 2) * 127 + 128);
        b = round(math.sin(0.024 * i + 4) * 127 + 128);
        return (r,g,b)
    
    print(num_to_rgb(1.32))
    >> (183, 1, 179)
    

    这将返回一个由三个整数 (r,g,b) 组成的元组。

    确保不允许无效输入(也称为负数,或 val > max_val)也是一个好主意:

    def num_to_rgb(val, max_val=3):
        if (val > max_val):
            raise ValueError("val must not be greater than max_val")
        if (val < 0 or max_val < 0):
            raise ValueError("arguments may not be negative")
    
        i = (val * 255 / max_val);
        r = round(math.sin(0.024 * i + 0) * 127 + 128);
        g = round(math.sin(0.024 * i + 2) * 127 + 128);
        b = round(math.sin(0.024 * i + 4) * 127 + 128);
        return (r,g,b)
    
    print(num_to_rgb(4.32))
    >> ValueError: val must not be greater than max_val
    

    【讨论】:

      猜你喜欢
      • 2019-09-28
      • 1970-01-01
      • 2017-03-06
      • 2015-06-30
      • 1970-01-01
      • 2012-09-21
      • 2011-09-02
      • 2013-02-27
      • 2020-05-01
      相关资源
      最近更新 更多