我是Java Advanced Imaging的新手,我遇到的第一个绊脚石就是能够读取12位单频带灰度JPEG文件。我已经看到JAI可以提及它,但是没有代码甚至是关于应该如何完成的建议。有人可以通过有用的链接或简短的代码片段来帮助我吗?
到目前为止,我一直在使用this tutorial,但它在这个问题上没有帮助我。
感谢。
答案 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
}。