我想在ruby中编写一个函数,给出1到500之间的数字将输出一个6位十六进制颜色代码,对于更高的数字,它会线性变暗 . 这似乎并不难,但我不知道从哪里开始 . 我该如何实现呢?
edit
Hue似乎是一种更可靠的方式 . 我想给出一个参考颜色,比如一个绿色的阴影,然后根据输入的数字使它变暗或变亮 .
输入:10
输出:颜色代码(在rgb或HSV中),是参考颜色的浅色调
输入:400
输出:颜色代码(在rgb或HSV中),它是参考颜色的相当深的色调
edit 2
我需要在1到500之间使用的唯一原因是因为这是我必须使用的输入 . 如果一些靠近在一起的数字映射到相同的颜色,那就没关系 .
4 回答
基本线性插值?
6位十六进制颜色代码采用RGB格式 . 你想要的是在HSV中工作:选择一个色调和饱和度,然后逐渐减少值 . 从HSV转换为RGB以输出颜色 . 有关示例,请参阅here .
为什么不将灰色级别返回,#ffffff为#000000?无论如何,500级黑暗无法真正区分,灰色可以给你256级 .
如果您只想使参考颜色变暗,那很容易 . 给定R,G,B颜色是你想要的最亮的颜色,将3个值中的每一个乘以(500输入)并除以499.将每个值转换为2个十六进制数字并用#as附加它们前方 .