将RGB值转换为整数

因此,在BufferedImage ,您会收到一个具有表示其中的RGB值的整数。 到目前为止,我使用以下来从中获取RGB值:

 // rgbs is an array of integers, every single integer represents the // RGB values combined in some way int r = (int) ((Math.pow(256,3) + rgbs[k]) / 65536); int g = (int) (((Math.pow(256,3) + rgbs[k]) / 256 ) % 256 ); int b = (int) ((Math.pow(256,3) + rgbs[k]) % 256); 

到目前为止,它的工作。

我需要做的是弄清楚如何获得一个整数,所以我可以使用BufferedImage.setRGB() ,因为它采用了它给我的相同types的数据。

我认为代码是这样的:

 int rgb = red; rgb = (rgb << 8) + green; rgb = (rgb << 8) + blue; 

另外,我相信你可以用下面的方法获得个人价值:

 int red = (rgb >> 16) & 0xFF; int green = (rgb >> 8) & 0xFF; int blue = rgb & 0xFF; 
 int rgb = ((r&0x0ff)<<16)|((g&0x0ff)<<8)|(b&0x0ff); 

如果你知道你的r,g和b值从不> 255或<0,你不需要&0x0ff

Additionaly

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

不需要重复。

 int rgb = new Color(r, g, b).getRGB(); 

如果r,g,b = 3个颜色的0到255之间的整数值

然后

 rgb = 65536 * r + 256 * g + b; 

单个rgb值是r,g,b的合成值,总计为16777216种可能的色调。

要获得单独的颜色值,您可以对像素(x,y)使用像Color一样的Color。

 import java.awt.Color; import java.awt.image.BufferedImage; Color c = new Color(buffOriginalImage.getRGB(x,y)); int red = c.getRed(); int green = c.getGreen(); int blue = c.getBlue(); 

以上将给你在0到255范围内的红,绿和蓝的整数值。

要设置RGB值,您可以通过以下方式进行设置:

 Color myColour = new Color(red, green, blue); int rgb = myColour.getRGB(); //Change the pixel at (x,y) ti rgb value image.setRGB(x, y, rgb); 

请注意,以上更改了单个像素的值。 因此,如果您需要更改整个图像的值,则可能需要使用两个for循环遍历图像。