Java BuffereImage';s setData()引发类型为\u INT\u RGB的异常

Java BuffereImage';s setData()引发类型为\u INT\u RGB的异常,java,awt,bufferedimage,raster,Java,Awt,Bufferedimage,Raster,我正在尝试从像素数据创建一个BuffereImage。下面是我的示例代码。对于类型\字节\ GRAY,它可以正常工作,但对于类型\ INT \ RGB,它抛出java.lang.ArrayIndexOutOfBoundsException BufferedImage originalImage=<received from the caller>; Raster raster = originalImage.getData(); SampleModel sampleModel = r

我正在尝试从像素数据创建一个BuffereImage。下面是我的示例代码。对于类型\字节\ GRAY,它可以正常工作,但对于类型\ INT \ RGB,它抛出java.lang.ArrayIndexOutOfBoundsException

BufferedImage originalImage=<received from the caller>;
Raster raster = originalImage.getData();
SampleModel sampleModel = raster.getSampleModel();

WritableRaster writableRaster= Raster.createWritableRaster(sampleModel, new  Point(0,0));
/*
 * Write data to the writableRaster
 */
int imageType;

if(isColordImage)
    imageType = BufferedImage.TYPE_INT_RGB;
else
    imageType = BufferedImage.TYPE_BYTE_GRAY;

BufferedImage newImage = new BufferedImage(imageWidth, imageHeight, imageType);
newImage.setData(writableRaster);
buffereImage originalImage=;
光栅=originalImage.getData();
SampleModel SampleModel=raster.getSampleModel();
WritableRaster WritableRaster=Raster.createWritableRaster(sampleModel,新点(0,0));
/*
*将数据写入可写光栅
*/
int图像类型;
if(isColordImage)
imageType=BuffereImage.TYPE\u INT\u RGB;
其他的
imageType=BuffereImage.TYPE\u BYTE\u GRAY;
BuffereImage newImage=新的BuffereImage(图像宽度、图像高度、图像类型);
newImage.setData(可写光栅);

我哪里做错了?提前谢谢。

您在哪里设置
imageType
imageWidth
imageHeight
?我(确实)在用作
originalImage.getWidth()
originalImage.getHeight()
之前设置这两个变量。你能发布一个完整的简短程序来演示这个bug吗?