int array a BufferedImage

Estoy haciendo con elRobot Clase una printscreen y convierto BufferedImage en una matriz int. Luego quiero volver a convertir la matriz int en un bufferedimage pero eso da un error. Este es mi código:

Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage printscreen = robot.createScreenCapture(new Rectangle(screen));
int[] pixels = ((DataBufferInt) printscreen.getRaster().getDataBuffer()).getData();

BufferedImage image = new BufferedImage(screen.width, screen.height, BufferedImage.TYPE_INT_RGB);
WritableRaster raster = (WritableRaster) image.getRaster();
raster.setPixels(0, 0, screen.width, screen.height, pixels);

Pero me sale el error:ArrayIndexOutOfBoundsException: 2073600 ¿pero por qué?

Estoy recibiendo la excepción en esta línea:

raster.setPixels(0, 0, screen.width, screen.height, pixels);

EDITAR: Funciona si cambio el segundo tipo de imagen de búfer a TYPE_BYTE_GRAY.

Respuestas a la pregunta(5)

Su respuesta a la pregunta