获得最佳文本颜色的算法

时间:2011-11-03 11:21:58

标签: algorithm colors

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

有什么想法吗?

2 个答案:

答案 0 :(得分:12)

“最佳颜色”非常主观且依赖于背景。这取决于你想要的效果:如果你想要尽可能高的对比度,寻找互补色(绿色为红色,蓝色为黄色等)。如果你想要“相似”的颜色,寻找类似的和声。如果你只想在黑白之间做出决定,测量亮度(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(苍白的充满活力)。

这只是一些提示。总而言之:取决于!

谷歌的色彩理论和色彩和谐。一些链接:

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

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

答案 1 :(得分:6)

每个人都没有最好的选择。

如果您需要确保文本易于阅读,请使用以下简单公式:

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

其中亮度定义为

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

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