0

我正在尝试制作一个水平翻转给定图像的功能。如您所知,处理使用该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 程序员:

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

所以伙计们,我尝试的是:

  • (i * width)与;采取同一行
  • 从底部到达,中行的起始位置toReturn
  • toReverse从;中行的起始位置到达底部

我拥有的是一个ArrayOutOfBoundsException: 1499.

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

4

1 回答 1

1

你的公式似乎是正确的。但是唯一可能导致这里提到的异常的一件事是 unknown (for us) variable width。看来,这个变量与对象toReverse及其维度无关。我敢肯定,你必须像这样修复它:

toReturn.pixels[(i * toReverse.width) + (toReverse.width - 1 - j)] = toReverse.pixels[(i * toReverse.width) + j];
于 2013-05-20T08:14:54.253 回答