我知道这可能是重复的问题。 Ruby, Generate a random hex color
我的问题略有不同。我需要知道,如何只生成随机的十六进制浅色,而不是深色。
最佳答案
In this thread颜色亮度用公式描述
(0.2126*r) + (0.7152*g) + (0.0722*b)
相同的亮度公式是 given in wikipedia (它取自 this publication )。它反射(reflect)了人类的感知,绿色最“密集”,蓝色最不“密集”。
因此,您可以选择 r、g、b,直到亮度值超过亮和暗之间的分界线(255 到 0)。例如:
lum, ary = 0, []
while lum < 128
ary = (1..3).collect {rand(256)}
lum = ary[0]*0.2126 + ary[1]*0.7152 + ary[2]*0.0722
end
Another article指亮度,为r、g、b的算术平均值。请注意,亮度更加主观,因为给定的目标亮度会在不同的环境中引起对亮度的不同感知(特别是,周围的颜色会影响您的感知)。
总而言之,这取决于您认为哪些颜色是“浅色”。
关于Ruby,生成随机的十六进制颜色(仅浅色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6187738/