我正在尝试过滤图像。首先,我将 RGB 值放入int[][]
其中,然后进行过滤。在下一步中,我必须转换int[][]
为int[]
,最后我想再次显示新图像。这是我的代码:
int row,col,count=0;
int[] pixels = new int[width*height];
while(count!=(pixels.length)){
for(row=0;row<height;row++){
for(col=0;col<width;col++){
pixels[count] = imageArray[row][col];
count++;
}
}
}
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
WritableRaster raster = (WritableRaster) image.getData();
raster.setPixels(0,0,width,height,pixels); //The problem appear in this line
这是我的错误。
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: java.awt.image.SinglePixelPackedSampleModel.setPixels(Unknown Source) at java.awt.image.WritableRaster.setPixels(Unknown Source) 的 181000
我检查了类型,两个数组的大小,我不知道我能做什么。
第一个数组 int[][] 使用以下代码创建:
int[][] imageArray = new int[height][width]; //...dar tamaño al array donde guardaremos la imagen
for (int row = 0; row < height; row++) { //en este doble bucle vamos guardando cada pixel
for (int col = 0; col < width; col++) {
imageArray[row][col] = image.getRGB(col, row);
}
}