我试图用 Java 实现我的颜色编辑器。它应该是一个简单的软件。用户将以十六进制 RGB 输入颜色,例如:0xFF00FF。我知道如何计算色相、色度、饱和度和亮度,但是如何为给定的颜色添加或减去色相值?这就是奥秘。
有什么算法或公式可以使用吗?
现在我使用这种方法,但我认为结果与我使用 Adobe Photoshop 得到的不同。
public void addHue(float addHue) {
float c = getChroma();
addHue %= 6;
if (addHue < 2) {
float n = 1 - green;
green = green + addHue * n;
} else if (addHue < 4) {
addHue -= 2;
float n = 1 - blue;
blue = blue + addHue * n;
} else if (addHue < 6) {
addHue -=4;
float n = 1 - red;
red = red + addHue * n;
}
if (green > 1) green = 1;
else if (green < 0) green = 0;
if (red > 1) red = 1;
else if (red < 0) red = 0;
if (blue > 1) blue = 1;
else if (blue < 0) blue = 0;
}