Algorithm 获取最佳文本颜色的算法

Algorithm 获取最佳文本颜色的算法,algorithm,colors,Algorithm,Colors,我正在寻找一种算法,从给定的背景色中获得最佳的文本颜色(最悦目) 有什么想法吗?“最佳颜色”是非常主观的,取决于上下文。这取决于你想要什么效果:如果你想要尽可能高的对比度,寻找互补色(这会让你在绿色上看到红色,在蓝色上看到黄色等等)。如果你想要“相似”的颜色,寻找相似的和声。如果你只想在黑色和白色之间做出决定,请测量亮度(hamstergene发布了一个非常好的公式) 无论你走到哪里,HSV颜色模型都是关键 获得互补色或类似色很简单(例如,hue\u text=(hue\u bg+180)%36

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

有什么想法吗?

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

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

获得互补色或类似色很简单(例如,
hue\u text=(hue\u bg+180)%360
hue\u text=(hue\u bg+30)%360

您还可以尝试使用亮度值和饱和度,以获得更好的对比度。例如,
v_text=1-v_bg
可以在明亮的背景上显示深色文本,反之亦然(注意中间色调!)。它不一定是线性的-你也可以使用步进函数,比如:
如果v_bg<0.5那么v_text=1,否则v_text=0
,或者
如果s_bg<0.5那么s_text=1,否则s_text=0
(在苍白中充满活力)

这只是一些提示。总之:这要看情况了

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


没有适合每个人的最佳选择

比如说,如果您需要确保文本易于阅读,以下简单公式对我很有效:

textColor = brightness(backColor) > 0.5 ? black : white;
其中亮度定义为

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

(关于“亮度”有几种定义,我使用了这个,但我认为任何一种都可以)。

不打算进行下一次投票,因为它有趣且有用,但你可能想为每个人更清楚地解释一下“最佳颜色”。Widor的观点很好。请改写以扩展您所说的“最佳颜色”(最悦目、最高对比度、对色盲友好等等)的含义。“悦目”是否以某种方式可以客观测量?如果是,怎么做?如果没有,你知道为什么没有这样的算法吗?我回来找它,记得有人给出了更好的答案,给你。:-)