RGB - 从某些光谱中排除颜色

时间:2014-05-21 01:27:26

标签: python rgb

我想随机生成文字颜色并将其渲染到白色背景上。 问题是,许多随机生成的颜色与白色没有很好的对比。

目前我只是使用它:

r = lambda: random.randint(0, 255)
color = Color((r(),r(),r()))

是否有任何库/算法可以消除某些RGB范围以避免混合颜色,或者;比较2种RGB颜色并确定它们是否形成对比。

2 个答案:

答案 0 :(得分:4)

为了与白色形成良好的对比,至少有一种R,G,B颜色应该在黑暗的一面。我会选择低于128的东西。这就是我要做的事情:

from random import randint, shuffle
color = [randint(0, 255), randint(0, 192), randint(0, 128)]
shuffle(color)
color = Color(tuple(color))

random colors

第一行将您需要的函数从random包导入您的命名空间,以便在不使用package.name成语的情况下轻松访问它们。

第二行生成3个随机数的列表。第一个覆盖整个0-255范围,第二个覆盖更暗,第三个覆盖我推荐的0-128范围。

第三行就地将3个值混洗,使较暗的原色并不总是蓝色。

第四行将列表转换为您可以使用的颜色。由于您的示例显示了一个带有元组的Color类,我假设您需要先将列表转换为元组。

答案 1 :(得分:3)

除了使用RGB组件生成颜色外,您还可以通过允许更直接地控制其强度的方式生成颜色:您可以使用色相饱和度值组件生成颜色({{ 3}})。

例如,对于您的白色背景,您可以保留所有色调,但将值限制在某个范围内。

如果您需要RGB颜色,最后,您可以使用Python the value controls the intensity将HSV转换为RGB。