Java改变图像的饱和度

时间:2016-02-07 16:25:00

标签: java

我正在尝试用Java改变特定图像的饱和度。我已经知道如何编辑像素的色调和亮度,但我很难理解如何进行饱和度。如果您需要了解它,这是我用来循环每个像素的循环。我知道它对性能不利,但它是暂时的。 循环:

for(int y = 0; y < height; y++) {
    for(int x = 0; x < width; x++) {
        int pixel = image.getRGB(x, y);
        int r = (pixel >> 16) & 0xFF;
        int g = (pixel >> 8) & 0xFF;
        int b = (pixel) & 0xFF;

        //Adjust saturation:
        //?????????????????????
    }
}

简而言之,我不确定如何更改像素的饱和度,但我想知道如何。我上面使用的循环工作正常,所以没有问题。谢谢! :d

1 个答案:

答案 0 :(得分:3)

您可以使用:

int red = ...;
int green = ...;
int blue = ...;

float[] hsb = Color.RGBtoHSB(red, green, blue, null);

float hue = hsb[0];
float saturation = hsb[1];
float brightness = hsb[2];

/* then change the saturation... */

int rgb = Color.HSBtoRGB(hue, saturation, brightness);

red = (rgb>>16)&0xFF;
green = (rgb>>8)&0xFF;
blue = rgb&0xFF;