我正在尝试制作一个水平翻转给定图像的功能。
如您所知,处理使用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
。
我犯了一个错误,但......在哪里?
答案 0 :(得分:1)
你的公式似乎是正确的手提包。但是,这里唯一可能导致上述异常的事情是未知(对我们而言)变量width
。看来,这个变量与对象toReverse
及其维度无关。我敢肯定,你必须像这样解决它:
toReturn.pixels[(i * toReverse.width) + (toReverse.width - 1 - j)] = toReverse.pixels[(i * toReverse.width) + j];