获得最佳文本颜色的算法

use*_*469 8 algorithm colors

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

任何的想法 ?

Kon*_*rus 12

"最好的颜色"是非常主观和依赖于背景的.这取决于你想要的效果:如果你想要尽可能高的对比度,寻找互补色(绿色为红色,蓝色为黄色等).如果你想要"相似"的颜色,寻找类似的和声.如果你只想决定黑色和白色,测量亮度(hamstergene为它发布了一个非常好的公式).

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

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

您还可以尝试使用值(亮度)和饱和度来获得更好的对比度.例如,v_text = 1 - v_bg可以在明亮的背景上为您提供深色文本,反之亦然(注意中间色调!).它不必是线性的 - 你也可以选择以下步骤函数:if v_bg < 0.5 then v_text = 1 else v_text = 0或者if 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


ham*_*ene 6

没有最好的每个人.

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

textColor = brightness(backColor) > 0.5 ? black : white;
Run Code Online (Sandbox Code Playgroud)

亮度定义为

brightness(R,G,B) = 0.299*R + 0.587*G + 0.114*B
Run Code Online (Sandbox Code Playgroud)

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