在Java中读取JPEG2000文件

9
我有一段代码,使用了一个包含jpeg2000字节的byte[]。我想在jLabel组件中显示这个图片。你知道该如何做吗?是否有相关代码可以提供?
5个回答

4
你可以这样做:

按照以下步骤进行操作

Image img = ImageIO.read(new ByteArrayInputStream(imageBytes));
ImageIcon imgIcon = new ImageIcon(img);

JLabel label = new JLabel(imgIcon);

但是标准SDK没有提供JPG2000解码器,您需要前往Java高级图像处理并使用适用于该格式的正确解码器。


我已经从Java网站下载了jai(而不是从您的链接下载,因为我找不到jai文件的下载链接),但是当我尝试使用您的方法读取图像时,遇到了空指针异常,我不知道为什么。即使我将jar文件添加到我的项目中(引用它们)..那么,有什么解决办法吗? - Q8Y

4
显然,Java高级图像(JAI)已经取消对jpeg2000 /(.jp2)文件的支持。
通过卸载JAI 1.1.3并安装旧版本1.1,我现在能够读取.jp2文件,并不再看到空指针错误。
版本1.1可在此处下载。 http://download.java.net/media/jai-imageio/builds/release/1.1/ 版本1.1列出了-g3fax g4fac jiio jp2k jpeg和png的编解码器。

1
链接已失效,这里是 Oracle 存档的新链接:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html - Kalaschni
这个图片格式真是让人头疼 - Yassir Khaldi
这个图片格式真是让人头疼 - undefined

2

现在有另一种选项(基于jj2000),来自BFO:https://github.com/faceless2/jpeg2000 - beat

1
使用Java库imageio-openjpeg(Apache 2许可证),您可以使用Java的imageio API处理Jpeg2000文件(*.jp2)。它基于OpenJPEG(BSD许可证)。自2015年以来,OpenJPEG是Jpeg2000标准的参考软件。如果要使用它,则需要在您的平台上同时安装imageio-openjpeg和OpenJPEG。

0

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