我正在尝试用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
答案 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;