将 RGB 值转换为整数

2022-08-31 17:23:20

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

// 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()


答案 1

我认为代码是这样的:

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;

答案 2
int rgb = ((r&0x0ff)<<16)|((g&0x0ff)<<8)|(b&0x0ff);

如果您知道 r、g 和 b 值永远不会> 255 或 < 0,则不需要 &0x0ff

此外

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

无需乘法。


推荐