如果非常简单,可以更改HSL色彩空间中的色调,饱和度和亮度。 请参阅this javascript implementation for example。
生成颜色方案也很容易,如:类似,单色,三元组,四分体等。 请参阅this javascript implementation。
问题是HSL颜色系统在感知上并不统一 实际上这是一个真正的问题。
如果你不知道我在说什么,那没关系。 了解它:here和here。 (这两篇文章非常简短但很有价值,你真的应该阅读它们。)
解决方案是使用感知统一的颜色空间,如:CieLab,CieLuv或Hcl。
问题是这些色彩空间也有超出色域的颜色(无法显示的颜色)。
要在javascript中使用不同的颜色空间,请查看chroma.js或chromatist。
在这个小小的介绍之后,这是我的实际问题:
我想生成感知统一的配色方案(类似,三元组,四元组,互补等)。正如我在Hsl中所提到的那样很简单:例如,为了生成一个三元组方案,我只需用120旋转HUE然后用240旋转,我就有一个三元组方案。
好吧,在CieLab,Hcl或CieLuv中,它并不那么简单。在Hcl(色调,色度,亮度)中,如果我在不改变色度和亮度的情况下旋转120等级的Hue,则生成的颜色可能无法显示(将在RGB空间之外)。
让我们总结一下这个问题:
如何在感知统一的颜色系统中生成颜色方案(如CieLab,Hcl,CieLuv或任何其他感知均匀的颜色空间)?
我想在javascript中实现这个,但基本上我想找到方法,所以问题是语言无关。
我希望我们能够一起找到一个聪明的方法:)
答案 0 :(得分:2)
最后,我基于HUSL(Human Friendly HSL)色彩空间解决了这个问题。这个色彩空间在感知上并不完美,但它非常接近它。
您可以在此处了解更多信息: