#java
Вопрос:
Привет, я хочу перебрать каждые 12 image
пикселей. Если пиксель черный, я хочу поставить 1 в свой массив, иначе 0.
int width = image.getWidth();
int height = image.getHeight();
int[][] pixels = new int[height / 12][width / 12];
int counterX = 1;
int counterY = 1;
for (int i = 0; i < width / 12; i ) {
for (int j = 0; j < height / 12; j ) {
if (counterX == 1 amp;amp; counterY == 1) {
int rgb = image.getRGB(counterX, counterY);
String s = Integer.toHexString(rgb);
if (s.equals("ff000000")) {
pixels[i][j] = 1;
} else {
pixels[i][j] = 0;
}
counterX = 12;
} else {
int rgb = image.getRGB(counterX, counterY);
String s = Integer.toHexString(rgb);
if (s.equals("ff000000")) {
pixels[i][j] = 1;
} else {
pixels[i][j] = 0;
}
counterX = 12;
if (counterX > width) {
counterX = 1;
counterY = 12;
if (counterY > height) {
counterY = height;
}
}
}
}
}
return pixels;
У меня индекс 41 выходит за рамки длины 41, это происходит в этой строке pixels[i][j] = 0;
Что-то не так с X.
Комментарии:
1. Следует
counterX
ли иcounterY
начинать с 1? Я предлагаю вам распечатать значенияcounterX
иcounterY
и посмотреть, находятся ли они в пределахgetRGB()
, которые могут превышать размер изображения. Размещение инструкций печати в других ключевых точках также может помочь и обычно является первым методом отладки, используемым в подобных случаях.2. Вы также можете показать фактическое исключение и код вокруг этого номера строки.
3. « для (int h = 0; h длина; h ) { для (int w = 0; w Тьфу, ты можешь писать встроенный код только в комментариях??