为什么这个循环在扫描图像时会给我一个arrayIndexOutOfBoundsException?

时间:2017-07-03 17:05:32

标签: arrays image-processing multidimensional-array indexoutofboundsexception

我正在尝试找出一些代码,通过更改每个像素的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);

        }
    }

它仍然表示坐标超出范围。我无法弄清楚为什么它不适用于水平但它适用于垂直,它适用于正方形但不适用于矩形。我的垂直翻转适用于正方形和矩形。

1 个答案:

答案 0 :(得分:0)

<video id="video1" width="320" height="240" controls src="video1.mp4" type="video/mp4"> Your browser does not support the video tag. </video>替换为 <div id="container"> <input id="fileUpload" type="file" /> <br /> <div id="image-container"> </div> </div> $("#fileUpload").on('change', function() { if (typeof(FileReader) == "undefined") { alert("Your browser doesn't support HTML5, Please upgrade your browser"); } else { var container = $("#image-container"); //remove all previous selected files container.empty(); //create instance of FileReader var reader = new FileReader(); reader.onload = function(e) { $("<img />", { // I want to add the syle here "src": e.target.result }).appendTo(container); } reader.readAsDataURL($(this)[0].files[0]); } }); 。 x值位于y值之前。 (见here