Я не знаю, что вы имеете в виду с 0- или 1-индексированным, но вот некоторые факты.
BufferedImage
- это общее изображение, поэтому пиксели начинаются с координаты (0,0)
Если вы хотите, чтобы массив работал с этим изображением, верхний левый угол будет иметь индекс 0 (если не указано иное)
image.getRGB(0, 0, image.getWidth(), image.getHeight(), array, 0, image.getWidth());
BufferedImage
изначально не поддерживает изображения 1 BPP, но либо в режиме Packed с Colormodel, либо в палитре с 2 индексами. Я не могу сказать, какой у вас есть без примеров.
Независимо от внутреннего формата, различные методы getRGB () всегда должны возвращать одно значение на пиксель и один пиксель на значение. Обратите внимание, что значение полной непрозрачности (0xFF000000, -16777216) также будет включено в результаты.
например.
BufferedImage image = new BufferedImage(16, 16, BufferedImage.TYPE_BYTE_BINARY);
image.setRGB(0, 0, 0xFFFFFFFF);
image.setRGB(1, 0, 0xFF000000);
image.setRGB(0, 1, 0xFF000000);
image.setRGB(1, 1, 0xFFFFFFFF);
System.out.println(image.getRGB(0, 0));
System.out.println(image.getRGB(1, 0));
System.out.println(image.getRGB(0, 1));
System.out.println(image.getRGB(1, 1));
int[] array = image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth());
System.out.println(array[0]); // at (0,0)
System.out.println(array[1]); // at (1,0)
System.out.println(array[16]); // at (0,1)
System.out.println(array[17]); // at (1,1)