从 RGB 生成可读的颜色?
Posted
技术标签:
【中文标题】从 RGB 生成可读的颜色?【英文标题】:Generating a readable colour from RGB? 【发布时间】:2011-02-27 00:03:08 【问题描述】:我正在添加一个函数,该函数允许用户输入颜色(例如:紫色),并将其个人资料的外观更改为紫色。它从文本解释为“颜色”类,该类将它们作为 RGB 数字存储在自身内部(int 代表红色,一个代表绿色,另一个代表蓝色)。我不知道该怎么做是在逻辑上将这三个数字变成另一个 3,这将使颜色变得可读。
谁能帮我解决这个问题?
乔
【问题讨论】:
看看这个问题:***.com/questions/946544/… @Mark 非常感谢您的帮助!请发布它作为答案:) 【参考方案1】:如果我正确地解释了您的问题,那么您正在寻找在某人选择了背景主题颜色之后的可读文本颜色。这是在一个较旧的问题中回答的:
Good text foreground color for a given background color
【讨论】:
【参考方案2】:显然,并不是所有可能的 RGB 组合都有名称!大概您想找到您已为其指定名称的附近组合?
因此,您真正需要的只是一种定义一个 RGB 与另一个 RGB 的“接近程度”的方法。为简单起见,我建议使用欧几里得距离平方,即 (R2-R1)^2 + (G2-G1)^2 + (B2-B1)^2。然后,您需要做的就是遍历所有“命名”颜色,并找到距离最短的颜色。
【讨论】:
@Joe Simpson:哦,等等,“可读”是指“清晰”,如“我想在给定任意背景颜色的情况下生成清晰的前景色”?【参考方案3】:您可以查看 X11 附带的 rgb.txt 文件。
一个解析器可以提供这些字符串之间的转换,并且 RGB 值不会很难构建,并且可能会满足您的需求。
【讨论】:
很抱歉,我的解析器已经可以为颜色提取许多名称和方法 @Joe 那么你的问题是什么?你能详细说明一下吗? 我正在尝试将我已经解析的 RGB 值转换为可读的颜色【参考方案4】:正如其他人已经说过的那样,有 1670 万种可能的组合,显然所有这些组合都没有定义的名称。
您不会详细介绍您的用例,但如果您想让最终用户友好,那么使用百分比怎么样?
80% red, 50% green, 23% blue
这对于非技术人员来说也是完全可以理解的。如果您使用整数百分比值,您将限制(从 256^3 到 100^3)可能性的数量,但不如将用户限制在固定的命名颜色调色板中。
【讨论】:
当 javascript 可用时,我将添加一个 javascript 颜色选择器以上是关于从 RGB 生成可读的颜色?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法以可读的形式从 .NET 程序集中检索编译器生成的代码?