9

我有一个使用byte[]包含图像 jpeg2000 字节的代码。我想在jLabel组件中显示这个怎么做?有人有想法或代码要做吗?

4

4 回答 4

4

你会这样做

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

JLabel label = new JLabel(imgIcon);

但是标准 SDK 不提供JPG2000解码器,您应该前往此处(Java Advanced Imaging)并为该格式使用正确的解码器。

于 2010-04-18T16:27:22.410 回答
3

显然,对 jpeg2000 / ( .jp2 ) 文件的支持已从 Java 高级成像 (JAI) 中删除。

通过卸载 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

于 2012-10-31T21:32:09.043 回答
2

我知道的唯一选择都是基于jj2000。

jai-imageio-core通过额外的第三方模块提供支持:

https://github.com/stain/jai-imageio-core

https://github.com/jai-imageio/jai-imageio-jpeg2000

它会向 ImageIO 注册自己,然后您就可以像读取任何 png、bmp 或 jpeg 一样读取 jpeg2000 文件。

尽管 jj2000 本身就是一个选项,但该 api 并非为日常使用而设计。

其他选项包括为jj2000提供自己的包装的 JMRTD 或商业产品JDeli

于 2013-05-13T22:40:32.567 回答
0

使用 Java 库imageio-openjpeg(Apache 2 许可证),您可以将 Jpeg2000 文件 (*.jp2) 与来自 Java 的 imageio API 一起使用。它基于OpenJPEG(BSD 许可证)。自 2015 年起,OpenJPEG 成为 Jpeg2000 标准的参考软件。

如果你想使用它,那么你的平台需要 imageio-openjpeg 和 OpenJPEG。

于 2020-09-13T18:56:44.293 回答