获得最佳文本颜色的算法

标签 algorithm colors

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

有什么想法吗?

最佳答案

“最佳颜色”是非常主观的,并且取决于上下文。这取决于您想要的效果:如果您想要尽可能高的对比度,请寻找互补色(这会让您在绿色上看到红色,在蓝色上看到黄色等)。如果您想要“相似”的颜色,请寻找类似的和谐。如果您只想在黑色和白色之间做出决定,请测量亮度(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 = 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

关于获得最佳文本颜色的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7994030/

相关文章:

css - 表格 td 中的 HTML/CSS 两种背景颜色和居中文本

android - 为按钮文本使用 2 种(或更多)颜色

c# - 列表框项的背景颜色(Windows 窗体)

c++ - 比较迭代器与 ptrdiff

c++ - 使用基本数据类型计算 C++ 中的阶乘项

java - 如何使用 System.out.println 在控制台中打印颜色?

swift - 快速相邻的颜色

算法帮助 : Calculate binary possibilities whilst ignoring zero bits

java - 缩短排序列表

algorithm - 估计/预测下载完成时间