如何在Python中将一系列数字映射到RGB

2024-04-26 00:39:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我要映射从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并在我的案例中使用它。你知道吗

我想为输出的rgb值之间的具体数字0和3。谢谢你的帮助。你知道吗


Tags: oftoinmap颜色range数字blue
1条回答
网友
1楼 · 发布于 2024-04-26 00:39:22

您可以将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\u 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

相关问题 更多 >