JAI:读取12位JPEG文件

3
我对Java高级图像处理一无所知,遇到的第一个问题是读取12位、单波段、灰度JPEG文件。我看到有人提到可以使用JAI实现,但没有代码甚至提示应该如何完成。请问是否能提供有用的链接或简短的代码片段来帮助我解决这个问题?我目前一直在使用这个教程,但对这个问题没有帮助。谢谢。
2个回答

1
JAI-ImageIO将自己注册到Java的ImageIO API中,因此您只需在类路径中拥有jai-imageio jars并调用正常的ImageIO方法,例如ImageIO.read(file),就可以使用它。
关于JPEG的问题可能是Java在IIORegistry中有一个默认的JPEG阅读器,您可能需要使用类似ImageIO.getImageReadersForFormatName()的东西手动选择正确的阅读器。
对于更奇特的格式,还有另一件事情是JAI ImageIO通常有两种实现方式——一种是纯Java实现,另一种是使用本机二进制库,因此请确保您在LD_LIBRARY_PATH中包含*lib-wrapper.dll(或适合您特定操作系统的任何内容)或者将其放置在程序的工作目录中。本机实现通常支持比纯Java更多的格式变体。

0

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

除了之前的答案,您还需要本地二进制库来读取JPEG 12位,因此需要使用mediaLib库。

您只需要从Image I/O中使用“ImageRead”操作即可:

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

通常情况下,我们从FTP读取图像文件,因此需要使用自定义的“MemoryImageInputStream”来获取“byte[]”,并通过继承“ImageInputStreamImpl”,将“byte[]”包装成“ImageInputStream”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接