我有一个使用byte[]
包含图像 jpeg2000 字节的代码。我想在jLabel
组件中显示这个怎么做?有人有想法或代码要做吗?
4 回答
你会这样做
Image img = ImageIO.read(new ByteArrayInputStream(imageBytes));
ImageIcon imgIcon = new ImageIcon(img);
JLabel label = new JLabel(imgIcon);
但是标准 SDK 不提供JPG2000解码器,您应该前往此处(Java Advanced Imaging)并为该格式使用正确的解码器。
显然,对 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
我知道的唯一选择都是基于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 并非为日常使用而设计。
使用 Java 库imageio-openjpeg(Apache 2 许可证),您可以将 Jpeg2000 文件 (*.jp2) 与来自 Java 的 imageio API 一起使用。它基于OpenJPEG(BSD 许可证)。自 2015 年起,OpenJPEG 成为 Jpeg2000 标准的参考软件。
如果你想使用它,那么你的平台需要 imageio-openjpeg 和 OpenJPEG。