我想随机生成文字颜色并将其渲染到白色背景上。 问题是,许多随机生成的颜色与白色没有很好的对比。
目前我只是使用它:
r = lambda: random.randint(0, 255)
color = Color((r(),r(),r()))
是否有任何库/算法可以消除某些RGB范围以避免混合颜色,或者;比较2种RGB颜色并确定它们是否形成对比。
答案 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
包导入您的命名空间,以便在不使用package.name
成语的情况下轻松访问它们。
第二行生成3个随机数的列表。第一个覆盖整个0-255范围,第二个覆盖更暗,第三个覆盖我推荐的0-128范围。
第三行就地将3个值混洗,使较暗的原色并不总是蓝色。
第四行将列表转换为您可以使用的颜色。由于您的示例显示了一个带有元组的Color
类,我假设您需要先将列表转换为元组。
答案 1 :(得分:3)
除了使用RGB组件生成颜色外,您还可以通过允许更直接地控制其强度的方式生成颜色:您可以使用色相饱和度值组件生成颜色({{ 3}})。
例如,对于您的白色背景,您可以保留所有色调,但将值限制在某个范围内。
如果您需要RGB颜色,最后,您可以使用Python the value controls the intensity将HSV转换为RGB。