图像编辑中的ArrayOutOfBoundsException

时间:2013-05-20 08:05:13

标签: java image processing

我正在尝试制作一个水平翻转给定图像的功能。 如您所知,处理使用PImage类型。

这是我正在尝试的事情:

PImage reverseHorOf(PImage toReverse){
  PImage toReturn = createImage(toReverse.width, toReverse.height, ARGB);
  toReturn.loadPixels();
  toReverse.loadPixels();
  for(int i = 0; i < toReverse.height; i ++)
    for(int j = 0; j < toReverse.width; j ++)
      toReturn.pixels[(i * width) + (width - 1 - j)] = toReverse.pixels[(i * width) + j];
  toReverse.updatePixels();
  toReturn.updatePixels();
  return toReturn;
}

@Java-only程序员:

  • createImagenew PImage;
  • 的“替代品” [li> loadPixels()updatePixels()需要[你不说?!?]加载和更新图像或框架的像素;
  • 我需要创建一个新的PImage,原因有两个:1)语法含义; 2)语义:如果我开始修改它的一部分,我就无法复制整个图像= P

所以小伙子们,我试过的是:

  • (i * width);
  • 一致
  • toReturn;
  • 的底部到达该行的起始位置
  • toReverse;
  • 中的行的起始位置到达底部

我所拥有的是ArrayOutOfBoundsException: 1499

我犯了一个错误,但......在哪里?

1 个答案:

答案 0 :(得分:1)

你的公式似乎是正确的手提包。但是,这里唯一可能导致上述异常的事​​情是未知(对我们而言)变量width。看来,这个变量与对象toReverse及其维度无关。我敢肯定,你必须像这样解决它:

toReturn.pixels[(i * toReverse.width) + (toReverse.width - 1 - j)] = toReverse.pixels[(i * toReverse.width) + j];