Java修改图像饱和度

8

我试图在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

imageclass是什么? - Aseem Bansal
java.awt.image.BufferedImage 是我正在使用的图像类型。 - user4573047
1个回答

4

您可以使用:

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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接