首页 文章

线性增加颜色暗度算法

提问于
浏览
2

我想在ruby中编写一个函数,给出1到500之间的数字将输出一个6位十六进制颜色代码,对于更高的数字,它会线性变暗 . 这似乎并不难,但我不知道从哪里开始 . 我该如何实现呢?

edit

Hue似乎是一种更可靠的方式 . 我想给出一个参考颜色,比如一个绿色的阴影,然后根据输入的数字使它变暗或变亮 .

输入:10
输出:颜色代码(在rgb或HSV中),是参考颜色的浅色调

输入:400
输出:颜色代码(在rgb或HSV中),它是参考颜色的相当深的色调

edit 2

我需要在1到500之间使用的唯一原因是因为这是我必须使用的输入 . 如果一些靠近在一起的数字映射到相同的颜色,那就没关系 .

4 回答

  • 1

    基本线性插值?

    // Pseudocode
    function fade_colour(source, factor)
        const max = 500
        const min = 1
    
        foreach component in source
            output[component] = round(source[component] * (max - value) / (max - min))
        endforeach
    
        return output
    endfunction
    
  • 3

    6位十六进制颜色代码采用RGB格式 . 你想要的是在HSV中工作:选择一个色调和饱和度,然后逐渐减少值 . 从HSV转换为RGB以输出颜色 . 有关示例,请参阅here .

  • 2

    为什么不将灰色级别返回,#ffffff为#000000?无论如何,500级黑暗无法真正区分,灰色可以给你256级 .

  • 1

    如果您只想使参考颜色变暗,那很容易 . 给定R,G,B颜色是你想要的最亮的颜色,将3个值中的每一个乘以(500输入)并除以499.将每个值转换为2个十六进制数字并用#as附加它们前方 .

相关问题