0

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

4

1 回答 1

1

如果使用 JMagick,我认为使用该dispatchImage方法是您正在寻找的方法。它将使您可以直接访问图像的原始像素。不需要文件格式。

有关示例,请参阅我的MagickUtil 类,或者如果您愿意,可以使用该类。

我还为 JMagick 支持的许多相同格式编写了纯 Java ImageIO 插件,这些插件可能有用。您可以在我的GitHub 存储库中找到它们。

于 2014-11-07T21:20:19.380 回答