JAI:读取12位JPEG文件

时间:2010-08-04 14:24:16

标签: java image jai

我是Java Advanced Imaging的新手,我遇到的第一个绊脚石就是能够读取12位单频带灰度JPEG文件。我已经看到JAI可以提及它,但是没有代码甚至是关于应该如何完成的建议。有人可以通过有用的链接或简短的代码片段来帮助我吗?

到目前为止,我一直在使用this tutorial,但它在这个问题上没有帮助我。

感谢。

2 个答案:

答案 0 :(得分:1)

JAI-ImageIO会将自己注册到Java的ImageIO api中,因此您只需在类路径中使用jai-imageio jar调用正常的ImageIO方法(如ImageIO.read(文件))就可以使用它。 / p>

jpeg的问题可能是Java在IIORegistry中有一个默认的jpeg阅读器,你可能必须使用像ImageIO.getImageReadersForFormatName()这样的东西手动选择正确的。

更深奥的格式的另一件事是JAI ImageIO通常有两个实现 - 一个是纯Java而另一个是使用本机二进制库,因此请确保包含* lib-wrapper.dll(或任何适合您特定操作系统的内容) )在LD_LiBRARY_PATH中或者在程序的工作目录中。本机实现通常支持模式格式变体而不是纯java变体。

答案 1 :(得分:0)

我们通常使用JAI + JAI Image I / O读取JPEG 12位灰度图像。

除了之前的答案,您需要本机二进制库来读取JPEG 12bit,因此需要mediaLib库。

您只需要Image I / O中的“ImageRead”操作:

byte[] imageBytes = ...
RenderedOp readImage = JAI.create("ImageRead", new MemoryImageInputStream(imageBytes));

通常从FTP读取图像文件,因此通过继承{{1}获取byte[]并需要将MemoryImageInputStream包装成byte[]的自定义ImageInputStream }。