Я пытаюсь сделать функцию, которая переворачивает по горизонтали заданное изображение. Обработка, как вы знаете, использует тип PImage
.ArrayOutOfBoundsException в редактировании изображений
Вот что я хочу:
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-только программистам:
createImage
является "заменой" дляnew PImage
;loadPixels()
иupdatePixels()
необходимы для [Вы не говорите?!?] Загружаете и обновляете пиксели изображения или кадра;- Мне нужно создать новый
PImage
по двум причинам: 1) значения синтаксиса; 2) Семантический смысл: я не могу скопировать все изображение, если я начинаю изменять его часть = P
So ребята, что я попытался является:
- Возьмите ту же линию с
(i * width)
; - Достигнуть снизу, начальное положение линии в
toReturn
; - Снимите нижнюю часть от начального положения линии в
toReverse
;
У меня есть ArrayOutOfBoundsException: 1499
.
Я делаю ошибку, но ... где?
'toReverse.pixels [(я * ширина) + J]' Вы должны проверить, что '(я * ширина) + j' не превышает размер массива (То же самое в '(i * width) + (width - 1 - j)'). – Maroun
Что такое переменная 'width'? – Andremoniy
Спасибо всем! 'width' - ширина рамки, я забыл использовать' toReverse.width' – ingroxd