似乎有很多色轮,颜色选择器和颜色匹配器网络应用程序,在那里你给出一种颜色,他们会发现一些其他颜色,当组合使用时会产生谐波布局.但是,它们中的大多数仅关注背景颜色,并且在每种背景颜色上打印的任何文本(如果在预览中完全打印文本)是黑色或白色.
我的问题不同了.我知道我想用于文本区域的背景颜色.我需要帮助的是选择几种颜色(更多,更好,我可以在这个背景上用作字体颜色).最重要的是,颜色将确保字体是可读的(对比度不是太低,也可能不是太高,以避免眼睛受到压力),当然,前景和背景的组合看起来很好.
有人知道这样的申请吗?我更喜欢Web应用程序,我需要下载任何内容.谢谢.
如果您需要算法,请尝试以下操作:将RGB空间的颜色转换为HSV空间(色调,饱和度,值).如果您的UI框架无法做到这一点,请查看以下文章:http://en.wikipedia.org/wiki/HSL_and_HSV#Conversion_from_RGB_to_HSL_or_HSV
顺化是[0,360].要找到"相反"的颜色(想想色轮),只需添加180度:
h = (h + 180) % 360;
对于饱和度和值,将它们反转:
l = 1.0 - l; v = 1.0 - v;
转换回RGB.这应该总是给你一个高对比度,即使大多数组合看起来很难看.
如果你想避免"丑陋"的部分,建立一个包含几个"好"组合的表,找到差异最小的表
def q(x): return x*x def diff(col1, col2): return math.sqrt(q(col1.r-col2.r) + q(col1.g-col2.g) + q(col1.b-col2.b))
并使用它.