【发布时间】:2017-12-07 00:48:48
【问题描述】:
我目前正在尝试找出一些代码,通过更改每个像素的 rgb 值并将它们放入数组中来使图像水平翻转。我设法让它垂直翻转图像,但我不能让它水平工作。我不知道为什么我不断收到 outOfBoundsException。值得注意的是,此代码适用于方形图像,但不适用于矩形。所以我的代码是
int width = selection.getWidth();
int height = selection.getHeight();
int rgb[][] = new int[height][width];
int rgb2[][] = new int[height][width];
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
rgb[i][j] = selection.getRGB(i, j);
rgb2[i][j] = selection.getRGB(i, j);
System.out.println(j);
}
}
通过读取小数组的值来调试它并测试这个循环,我无法弄清楚发生了什么。我尝试手动做一些值,它似乎应该逐行扫描,创建一个与像素值具有相同高度和宽度的二维数组。但是,它永远不会脱离内部循环。内部循环中的某些内容超出了范围。
即使在做
for (int i = 0; i < rgb.length; i++) {
for (int j = 0; j < rgb[0].length; j++) {
rgb[i][j] = selection.getRGB(i, j);
rgbTwo[i][j] = selection.getRGB(i, j);
}
}
它仍然说坐标超出范围。我不明白为什么这不适用于水平但它适用于垂直,它适用于正方形但不适用于矩形。我的垂直翻转适用于正方形和矩形。
【问题讨论】:
-
看起来
i和j倒退了。getRGB不应该是宽度吗?
标签: arrays image-processing multidimensional-array indexoutofboundsexception