从 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 生成可读的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何生成RGB图像的颜色直方图?

有没有办法以可读的形式从 .NET 程序集中检索编译器生成的代码?

在Angularjs中使用AWS API从S3代理生成Word文档无法打开“选择使您的文档可读的编码”

dart 可以生成可读的 javascript 库吗?

使用 GCC 生成可读的程序集?

如何使用 ruby​​ on rails 生成人类可读的时间范围