Java 从BuffereImage读取像素-颜色值错误

Java 从BuffereImage读取像素-颜色值错误,java,bufferedimage,raster,Java,Bufferedimage,Raster,当一艘宇宙飞船被摧毁时,我会创建一个包含宇宙飞船图像像素的列表。像素是我的像素类的对象。创建列表后,它被添加到主列表中,在主列表中对它们执行各种操作。我的代码是这样的: //创建数组的代码 列表像素=新建LinkedList(); BuffereImage buff=(BuffereImage)图像; 对于(intpx=0;px16; 绿色整数=(rgb&0x0000ff00)>>8; int blue=rgb&0x000000ff; int alpha=(rgb>>24)和0xff; 如果(α

当一艘宇宙飞船被摧毁时,我会创建一个包含宇宙飞船图像像素的列表。像素是我的像素类的对象。创建列表后,它被添加到主列表中,在主列表中对它们执行各种操作。我的代码是这样的:

//创建数组的代码
列表像素=新建LinkedList();
BuffereImage buff=(BuffereImage)图像;
对于(intpx=0;px>16;
绿色整数=(rgb&0x0000ff00)>>8;
int blue=rgb&0x000000ff;
int alpha=(rgb>>24)和0xff;
如果(α=255){
添加(新像素(像素、像素、红色、绿色、蓝色));
}
}
}
//像素类构造函数
像素(浮点x、浮点y、整数红色、整数绿色、整数蓝色){
super(x,y);
BuffereImage buff=新的BuffereImage(1,1,BuffereImage.TYPE_INT_ARGB);
WritableRaster raster=buff.getRaster();
//看起来一切都很好,因为这一行,所以错误一定在这两行的某个地方
setPixel(0,0,新int[]{红,蓝,绿,255});
图像=浅黄色;
}

简要说明:image是image类型的私有字段。它在repaint()方法中使用,该方法使用drawImage()方法绘制像素。关于我的问题:一切都很好。像素在正确的位置创建,但都是紫色。它们有不同的色调(较亮和较暗),但都是紫色,而不是与图像颜色相同的颜色!为什么会这样?为什么是紫罗兰?有人能帮我解开这种奇怪的行为吗?

在你的
setPixel
方法中,这可能是绿色和蓝色值的混合。颜色通常以RGB顺序给出,这就是如何从
buffereImage
中解压缩颜色

而不是

raster.setPixel(0, 0, new int[]{red, blue, green, 255});
试一试


如果这不起作用,您可能需要修改数组中的不同变量顺序,直到它看起来正确为止。

若要更快获得更好的帮助,请发布一篇文章。
raster.setPixel(0, 0, new int[]{red, green, blue, 255});