Java – 红色,绿色,蓝色到getRGB
通过使用BufferedImage
对象调用getRGB(int x, int y)
,可以得到一个负数。
如何将三个不同的值(红色,绿色和蓝色)转换为这个单个负数?
使用Color类:
new Color(r, g, b).getRGB()
BufferedImage最终委托给使用以下代码的java.awt.image.ColorModel
:
public int getRGB(Object inData) { return (getAlpha(inData) << 24) | (getRed(inData) << 16) | (getGreen(inData) << 8) | (getBlue(inData) << 0); }
修改它以满足您的需求是一项微不足道的工作。
JB Nizet的答案很棒 ,但是在创建“Color”类型的新对象数千次时,它可能会非常慢。 最简单的方法是:
int rgb = (red << 16 | green << 8 | blue)
正如ByteBit所回答的那样