我正在尝试填充一个像素矩形,但我总是在下面一行得到Arrayindexoutofbounds
:
targetwr.setPixels(i, j, 3, 3, pixel);
这是我的代码:
WritableRaster sourcewr = source.getRaster();
BufferedImage bi = new BufferedImage(source.getWidth(),
source.getHeight(), BufferedImage.TYPE_INT_ARGB);
WritableRaster targetwr = bi.getRaster();
for (int i = 0; i < sourcewr.getWidth() - rate; i += rate) {
for (int j = 0; j < sourcewr.getHeight() - rate; j += rate) {
int[] pixel = null;
pixel = sourcewr.getPixel(i, j, pixel);
System.out.println(i + " " + j);
targetwr.setPixels(i, j, 3, 3, pixel);
}
}
答案 0 :(得分:0)
非常简单。 sourcewr
栅格大于targetwr
栅格。您正在迭代sourcewr
的长度和高度,并且永远不会检查坐标是否为targetwr
的入口。
您可以检查i
和j
是否在范围内,或确保栅格在嵌套for
循环之前的大小相同。如,
if(i < targetwr.getWidth() && j < targetwr.getHeight()) {
targetwr.setPixels(i, j, 3, 3, pixel);
}
这显然也受变量rate
的影响,无论是什么。它没有在您的代码段中定义。