我正在寻找一种算法,可以从给定的背景色中获取最佳文本颜色(最符合视觉效果)。 有任何想法吗?
hue_text = (hue_bg + 180) % 360
或 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
(浅色背景上的艳丽颜色)。并不存在一个适合所有人的最佳方案。
如果你想确保文本易于阅读,以下简单公式对我来说很有效:
textColor = brightness(backColor) > 0.5 ? black : white;
亮度定义为
brightness(R,G,B) = 0.299*R + 0.587*G + 0.114*B
“亮度”有几种定义,我选择了这个,但我认为任何一个都可以。