【问题标题】:Algorithm to get best text color获得最佳文本颜色的算法
【发布时间】:2011-12-21 02:19:21
【问题描述】:

我正在寻找一种算法来从给定的背景颜色中获得最佳文本颜色(最令人赏心悦目)。

有什么想法吗?

【问题讨论】:

  • 不打算投反对票,因为它有趣且有用,但您可能想为每个人更清楚地解释“最佳颜色”。
  • Widor 的观点非常好。请改写以扩展您所说的“最佳颜色”的含义(最令人赏心悦目、最高对比度、色盲友好等)。
  • “赏心悦目”是否可以通过某种方式客观衡量?如果是这样,怎么做?如果没有,你明白为什么不能有这样的算法吗?

标签: algorithm colors


【解决方案1】:

“最好的颜色”是非常主观的和上下文相关的。这取决于您想要什么效果:如果您想要尽可能高的对比度,请寻找互补色(这会给您绿色上的红色,蓝色上的黄色等)。如果您想要“相似”的颜色,请寻找类似的和声。如果您只想在黑白之间做出决定,请测量亮度(hamstergene 发布了一个非常好的公式)。

无论走到哪里,HSV 颜色模型都是关键。

获得互补或相似的颜色是微不足道的(例如hue_text = (hue_bg + 180) % 360hue_text = (hue_bg + 30) % 360)。

您还可以尝试数值(亮度)和饱和度以获得更好的对比度。例如,v_text = 1 - v_bg 可以在明亮的背景上为您提供深色文本,反之亦然(注意中间色调!)。它不必是线性的 - 您也可以使用阶梯函数,例如:if v_bg < 0.5 then v_text = 1 else v_text = 0if s_bg < 0.5 then s_text = 1 else s_text = 0(在苍白中充满活力)。

这只是一些提示。一句话:视情况而定!

Google 了解色彩理论和色彩和谐。部分链接:

http://www.tigercolor.com/color-lab/color-theory/color-harmonies.htm

http://www.colormatters.com/color-and-design/basic-color-theory

【讨论】:

    【解决方案2】:

    没有最适合每个人的。

    假设您需要确保文本易于阅读,以下简单的公式对我来说效果很好:

    textColor = brightness(backColor) > 0.5 ? black : white;
    

    亮度定义为

    brightness(R,G,B) = 0.299*R + 0.587*G + 0.114*B
    

    (“亮度”有多种定义,我用过这个,但我认为任何一个都可以)。

    【讨论】:

    • 我回来寻找它并记得有人给出了更好的答案,你在这里。 :-)
    猜你喜欢
    • 2010-12-13
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2021-06-21
    • 1970-01-01
    • 2013-03-09
    相关资源
    最近更新 更多