如果很容易更改HSL色彩空间的色相,饱和度和亮度。
参见this javascript implementation for example

也很容易生成配色方案,例如:类似,单色,三重,四色等。
参见this javascript implementation

问题在于HSL颜色系统在感知上并不统一。
实际上,这是一个真正的问题。

如果您不知道我在说什么,那也可以。
阅读相关内容:herehere。 (这两篇文章确实很简短,但非常有值(value),您确实应该阅读它们)。

解决方案使用的是感知上统一的色彩空间,例如:CieLab,CieLuv或Hcl。

问题在于这些颜色空间还具有超出色域的颜色(无法显示的颜色)。

要在javascript中使用不同的色彩空间,请查看chroma.jschromatist

经过这个简短的介绍之后,这是我的实际问题:

我想生成在感知上统一的配色方案(类似,三重,四重,互补等)。正如我在Hsl中提到的那样,它很简单:例如,要生成一个三合一方案,我只需将HUE旋转120,然后将其旋转为240,就可以得到一个三合一方案。

好吧,在CieLab,Hcl或CieLuv中并不是那么简单。在Hcl(色相,色度,亮度)中,如果在不更改色度和亮度的情况下以120色度旋转色相,则生成的颜色可能无法显示(在RGB空间之外)。

让我们总结一下这个问题:

如何在感知统一的色彩系统(例如CieLab,Hcl,CieLuv或任何其他感知统一的色彩空间)中生成配色方案?

我想用javascript实现,但是基本上我想找到方法,所以问题是语言无关的。

我希望我们可以一起找到聪明的方法:)

最佳答案

最后,我基于HUSL(人类友好HSL)色彩空间解决了这个问题。这个色彩空间在感知上并不是完全统一的,但是非常接近。

您可以在此处了解更多信息:

http://boronine.com/husl/

07-24 20:05