如何在Java中使用HSL色彩空间?
2022-09-02 01:04:42
我看了一下ColorSpace类,发现了常量(大概只是不同顺序的HSL)。TYPE_HLS
是否可以使用此常量来创建色相、饱和度和亮度?如果没有,是否有任何Java类可以做到这一点,或者我需要编写自己的Java类吗?Color
我看了一下ColorSpace类,发现了常量(大概只是不同顺序的HSL)。TYPE_HLS
是否可以使用此常量来创建色相、饱和度和亮度?如果没有,是否有任何Java类可以做到这一点,或者我需要编写自己的Java类吗?Color
这里给出的大多数答案似乎都假设HSL == HSB,这是错误的。HSB色彩空间在许多情况下是有用的(并且被使用),但有一个值得注意的例外:CSS。非RGB css颜色函数hsl()和hsla()是HSL,而不是HSB。因此,能够在java中与HSL相互转换非常有用。
这里有一个很好的关于这个问题的文章:http://tips4java.wordpress.com/2009/07/05/hsl-color/ TL;DR:代码在这里:http://www.camick.com/java/source/HSLColor.java
我已经创建了一个要点备份,如果博客出现故障:https://gist.github.com/Yona-Appletree/0c4b58763f070ae8cdff7db583c82563
如果您不想使用整个类,则其中的方法很容易提取。
许可证
该代码似乎属于公共领域,如博客的“关于”页面所述(https://tips4java.wordpress.com/about/):
We assume no responsibility for the code. You are free to use and/or modify and/or distribute any or all code posted on the Java Tips Weblog without restriction. A credit in the code comments would be nice, but not in any way mandatory.
编辑:我意识到HSB!= HSL,下面的答案是HSB。
我不认为有必要在这里使用ColorSpaces。请尝试类似下面的操作:
float hue = 0.9f; //hue
float saturation = 1.0f; //saturation
float brightness = 0.8f; //brightness
Color myRGBColor = Color.getHSBColor(hue, saturation, brightness);