Java-红色、绿色、蓝色至getRGB

Java-红色、绿色、蓝色至getRGB,java,rgb,bufferedimage,Java,Rgb,Bufferedimage,通过使用buffereImage对象调用getRGB(intx,inty),可以得到一个负数 如何将三个不同的值(红色、绿色和蓝色)转换为一个负数?使用颜色类: new Color(r, g, b).getRGB() BuffereImage最终委托给使用以下代码的java.awt.image.ColorModel: public int getRGB(Object inData) { return (getAlpha(inData) << 24) | (g

通过使用
buffereImage
对象调用
getRGB(intx,inty)
,可以得到一个负数

如何将三个不同的值(红色、绿色和蓝色)转换为一个负数?

使用颜色类:

new Color(r, g, b).getRGB()

BuffereImage最终委托给使用以下代码的
java.awt.image.ColorModel

public int getRGB(Object inData) {
    return (getAlpha(inData) << 24)
        | (getRed(inData) << 16)
        | (getGreen(inData) << 8)
        | (getBlue(inData) << 0);
}
public int getRGB(Object inData){

return(getAlpha(inData)JB Nizet的答案很好,但在创建数千次“Color”类型的新对象时,它的速度可能非常慢。最简单的方法是:

int rgb = (red << 16 | green << 8 | blue)

int-rgb=(红色)这将使用比需要更多的资源。@Vulcan:同意。但是Color是开源的,所以OP可以“窃取”代码。@jbniset
int-rgb=(alpha顺便说一句。每个BuffereImage都包含一个包含所有像素的数组。如果BuffereImage的类型为_INT_RGB,则该数组将是一个INT数组。因此,如果您想进行大量像素操作,可以通过直接写入该数组来加快程序的速度。可以使用INT[]pixels=((DataBufferInt)image.getRaster().getDataBuffer()).getData()可能与@Michu93重复此问题与之相反,所以这不是重复的问题。您偷了这个吗?lol我很抱歉没有给出您的答案。现在请参见编辑