从RGB生成可读颜色?

时间:2010-06-02 19:22:19

标签: rgb colors

我正在添加一个允许用户输入颜色(例如:紫色)的功能,它会将其轮廓的外观变为紫色。它从文本解释为“颜色”类,它将它们作为RGB数字存储在其自身内部(int表示红色,一个表示绿色,另一个表示蓝色)。我不知道怎么做的是逻辑上把这三个数字变成另一个3,这将使它成为可读的颜色。

任何人都可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

如果我正确地解释了您的问题,那么在有人选择背景主题颜色后,您正在寻找可读的文字颜色。这是在一个较老的问题中回答的:

Good text foreground color for a given background color

答案 1 :(得分:1)

显然,每个可能的RGB组合都没有名称!大概你想要找到你 指定名称的附近组合?

所以你真正需要的是一种定义一个RGB与另一个RGB“接近”的方式。为简单起见,我建议欧几里德距离平方,即(R2-R1)^ 2 +(G2-G1)^ 2 +(B2-B1)^ 2。然后,您需要做的就是遍历所有“命名”颜色,找到距离最小的颜色。

答案 2 :(得分:0)

您可以查看X11附带的rgb.txt文件。

解析器可以提供这些字符串之间的转换,RGB值不会非常难以构建,并且可能会执行您正在寻找的内容。

答案 3 :(得分:0)

正如其他人已经说过的,有1670万种可能的组合,所有这些组合显然都没有明确的名称。

您不会详细了解您的用例,但如果您想让最终用户友好,那么使用百分比怎么样?

80% red, 50% green, 23% blue

对于非技术人员来说,这是完全可以理解的。如果使用整数百分比值,则可以限制(从256 ^ 3到100 ^ 3)可能性的数量,但不会将用户限制为固定的命名颜色调色板。