OutofBoundsException setpixels

时间:2014-04-04 18:12:35

标签: java awt

我正在尝试填充一个像素矩形,但我总是在下面一行得到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);
        }
    }

1 个答案:

答案 0 :(得分:0)

非常简单。 sourcewr栅格大于targetwr栅格。您正在迭代sourcewr的长度和高度,并且永远不会检查坐标是否为targetwr的入口。

您可以检查ij是否在范围内,或确保栅格在嵌套for循环之前的大小相同。如,

if(i < targetwr.getWidth() && j < targetwr.getHeight()) {
    targetwr.setPixels(i, j, 3, 3, pixel);
}

这显然也受变量rate的影响,无论是什么。它没有在您的代码段中定义。