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