Java - индекс двоичных изображений - PullRequest
0 голосов
/ 28 февраля 2012

Как узнать, генерируется ли двоичное изображение, которое я генерирую, 0 или 1?

Я создал программу, которая читает изображение, генерирует двоичное изображение и выполняет некоторые другие функции над изображением. Однако я хотел бы знать, как определить, по какому «индексу» значения пикселей в двоичном изображении?

Как это сделать?

Существует ли простая встроенная функция (например, image.getRGB();), которую можно вызвать, чтобы определить это?

1 Ответ

3 голосов
/ 28 февраля 2012

Я не знаю, что вы имеете в виду с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...