我试图过滤图像。首先,我将RGB值放在int[][]
之内,然后进行过滤。 在接下来的步骤中,我必须将int[][]
转换为int[]
,最后我希望再次显示新图像。这是我的代码:int []到BufferedImage
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
这是我的错误。
异常在线程 “主” java.lang.ArrayIndexOutOfBoundsException:181000 在java.awt.image.SinglePixelPackedSampleModel.setPixels(未知来源) 在java.awt.image.WritableRaster.setPixels(未知来源)
我检查两个数组的类型和大小,我不知道我能做什么。
第一阵列,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);
}
}
改变数组声明行此'INT []个像素=新INT [(宽度+ 1)*(高度+ 1)];',看看它是否工作。 – 2013-04-06 02:07:23
文档[http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/image/WritableRaster.html#setPixels(int,int,int,int,int [])]列表以下**两个**这个异常的原因:**如果坐标不在边界内,或者输入的int像素数组太小而无法保存输入** – 2013-04-06 02:17:18
谢谢,但我刚刚尝试了您的想法,它仍然有同样的问题。 – Enery93 2013-04-06 23:48:48