Я пытаюсь создать программу Java, которая будет распознавать многие форматы изображений. Изображения не могут быть прочитаны напрямую из файла, потому что их байты должны передаваться по сети.
В настоящее время я могу читать необработанные байты пикселей изображения, используя ImageIO. Однако я хотел бы поддерживать все форматы, поддерживаемые ImageMagick, поэтому прочитайте изображение с помощью JMagick, а затем передайте необработанные байты Tess4J. Я не уверен, как мне подойти к этому. Я обнаружил, что эта функция может дать мне байты:
PixelPacket[] MagickImage.getColormap();
Но мне пришлось бы написать специальный метод для преобразования полученных объектов PixelPacket в последовательные байты. Я могу это сделать, но, может быть, есть лучший способ сделать это? Например, может быть какой-то чрезвычайно необработанный формат файла (даже больше, чем http://en.wikipedia.org/wiki/BMP_file_format#mediaviewer/File:BMPfileFormat.png), которые я мог бы использовать, например, в этом методе:
byte[] imageToBlob(ImageInfo imageInfo) ?
Объект imageInfo
должен указывать на этот необработанный формат, а затем я могу вырезать информацию о пикселях из массива bytes
.
Это правильный способ или я должен использовать что-то более простое (быстрее/надежнее)?
Изменить
Я обнаружил, что формат, который я имел в виду, называется PNM.