Ruby,生成随机的十六进制颜色(仅浅色)

标签 ruby random colors

我知道这可能是重复的问题。 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/

相关文章:

arrays - 将长字符串转换为数组中均匀分割的索引

ruby-on-rails - 使用默认键创建新哈希

html - 为什么 hue-rotate(180deg) 不是它自己的反函数?

java - 用计时器改变圆圈的颜色

ruby-on-rails - 非常基本的 : "syntax error, unexpected ' =', expecting end-of-input"

ruby - 在 block 中进行后增量有什么问题

python - 使用随机选择函数时出现错误

python - 在 Python 中创建随机字符串

c++ - 如何从 OpenCV 中的散点构建网格?

java - 单击java中的菜单项时如何更改形状和颜色