如何以编程方式选择对比度好的RGB颜色?

时间:2011-08-31 17:33:41

标签: colors rgb

假设,在你的程序中:

  1. color A是我们随机选择的颜色

  2. 了解color A如何选择与color B形成鲜明对比的color A

  3. 问题可以进一步简化为:“想象两个颜色彼此相邻的2个方格。应该明确地清楚地看到人眼颜色不一样”

    示例:

    • 黑色 - >白
    • 蓝色 - >白

2 个答案:

答案 0 :(得分:9)

“网页内容无障碍指南”(WCAG)2.0(http://www.w3.org/TR/2008/REC-WCAG20-20081211)中提供了一些信息

  1. 视觉对比:http://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast

  2. 对比度:http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef

  3. 相对亮度:http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef

  4. 有一个很好的例子in this site,但他计算出两种颜色足够的地方,而不是如何得到它们。

    要选择具有良好对比度的颜色,我会选择补色:例如,选择随机颜色A,将其转换为HSV空间,获得互补色调。

    互补色调:在将颜色从RGB转换为HSV后,互补色调将为180度appart(或0.5,在0-1标准化的色调值中)。 This site在PHP中有一些关于它的东西

答案 1 :(得分:3)

当我在寻找更好的方法时,我偶然发现了Adobe Illustrator指南,该指南提到了它们如何创造互补色。他们说:

  

补色根据所选颜色中最高和最低RGB值的总和,将颜色的每个分量更改为新值。 Illustrator添加当前颜色的最低和最高RGB值,然后从该数字中减去每个组件的值以创建新的RGB值。例如,假设您选择RGB值为102的红色,153为绿色,51为蓝色。 Illustrator添加高(153)和低(51)值,最终得到一个新值(204)。从新值中减去现有颜色中的每个RGB值以创建新的互补RGB值:204-102(当前红色值)= 102表示新的红色值,204-153(当前绿色值)= 51对于新的绿色值,204 - 51(当前蓝色值)= 153表示新的蓝色值。

以编程方式执行此操作并不会太难,并认为这次它可能实际上适用于您要执行的操作。

祝你好运!