Я пытаюсь преобразовать и изображение (jpeg) в представление ASCII HEX, используя BufferedImage. Идея заключается в том, что я собираюсь использовать представление HEX непосредственно в коде ZPL.
Общий процесс, который я имею в виду, выглядит следующим образом:
- Прочитать img как BufferedImage
- Чтение значений RGB из BufferedImage
- преобразовать прочитанные значения в 1 или 0 (логическое представление)
- Сгруппируйте логическое представление в размер 8 (то есть один байт) и преобразуйте его в представление HEX.
До сих пор мне удалось выполнить первые два шага, используя следующий код.
try {
BufferedImage img = ImageIO.read(ImageToHex.class.getResourceAsStream("Input.JPG"));
final byte[] pixels = ((DataBufferByte) img.getRaster().getDataBuffer()).getData();
System.out.println("Pixels : " + pixels);
final int width = img.getWidth();
System.out.println("Width : " + width);
final int height = img.getHeight();
System.out.println("Height : " + height);
int[][] result = new int[height][width];
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {
result[row][col] = img.getRGB(col, row);
}
}
System.out.println("Result: " + result);
} catch (IOException e) {
e.printStackTrace();
}
Не уверен, как продолжить получение окончательного шестнадцатеричного представления входного изображения.
Примечание. Существуют некоторые специальные библиотеки для зебры, которые преобразуют изображение в GRF (которое является шестнадцатеричным представлением), но на данный момент у меня нет планов их использовать.
Оцените любой вклад в это.