2010-12-14 64 views
2

我想生成随机,非白色使用色调,饱和度和亮度,可以用作黑色文本的背景。我为随机颜色创建了一个发生器,但是当我扫描数字时,看不到任何清晰图案的颜色看起来太暗。随机非白色颜色,看起来好像为背景的黑色文本

如何为黑色文本生成随机非白色背景颜色?随意用代码或伪代码回答,但绝对没有必要。

回答

1

只生成具有高亮度值的颜色 - 例如,如果对{H,S,V}中的每个使用范围0-255,则会在[0,255]中生成H,在[0,255]中生成S, ,[168,255]中的V。这应该会给你足够明亮的颜色。您也可能想要限制饱和度(例如[0,192]中的S),因为全亮,全饱和度颜色上的黑色可能不可读。

您可能需要使用这些值来获取可获得可用颜色的范围。

+0

我会给它一个去,但我开始怀疑之间有交互作用三个号码 – 2010-12-14 15:40:11

+0

@Yar:嗯,电脑屏幕的色域的确是有限的,如果我正确理解这个插图:http://en.wikipedia.org/wiki/Gamut我真的不知道如何缩放这三个值得到更多可用的颜色 - 这种简单的黑客足以满足我有限的需求。 – Piskvor 2010-12-14 15:45:51

+0

刚刚尝试过,它实际上看起来不错。我会支持一个更有趣的答案,但这很好,谢谢。 – 2010-12-14 15:47:31

1

我不知道色彩理论,但您可以尝试随机生成RGB(xxx,xxx,xxx)中的3个组件,其方式是组件的总和大于X(X取决于您的对比度)想要),并转换为HSB。

+0

谢谢我会尝试[se骰子“随机”]。 – 2010-12-14 16:01:49

+0

你的权利,谢谢你的更正。我纠正了文字。 – 2010-12-14 16:31:49

+0

没问题。我想尝试一下你的解决方案 - 使用RGB代替HSV - 如果它有效,我会投票并接受它。很快就会回到这里 – 2010-12-14 20:47:26

1

单纯疱疹病毒和HSL是破损的模型,与感知无关。您应该在YUV空间(也称为YCbCr)中生成颜色,其中强度(Y)通道不是简单地R + G + B,而是模拟红色,绿色和蓝色的感知强度。一个好的起点是尝试随机Y值至少200和随机U和V值-50和50.

+0

非常有趣...... http://www.fourcc.org/fccyvrgb.php – 2010-12-15 07:14:43