Поток tesseract (Tess4J) от ImageMagick (JMagick)

Я пытаюсь создать программу 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.


person nuoritoveri    schedule 07.11.2014    source источник


Ответы (1)


Я думаю, что использование метода dispatchImage - это то, что вы ищете, если используете JMagick. Это даст вам прямой доступ к необработанным пикселям изображения. Формат файла не требуется.

См. мой MagickUtil для примеров или просто используйте этот класс, если хотите.

Я также написал чистые плагины Java ImageIO для многих из тех же форматов, которые поддерживает JMagick, которые могут быть полезны. Вы найдете их в моем репозитории GitHub.

person Harald K    schedule 07.11.2014
comment
Большое спасибо! Я не мог найти этот метод, потому что я в основном смотрел на возвращаемые типы, и в случае dispatchImage вы передаете массив байтов в качестве одного из аргументов. Надо было подумать... - person nuoritoveri; 12.11.2014