我正在尝试创建一个可以对多种格式的图像进行 OCR 的 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。