我有一个使用byte []的代码,其中包含一个图像jpeg2000字节。我想在jLabel组件中显示如何做到这一点?任何人都有想法或代码吗?
答案 0 :(得分:4)
你会这样做
Image img = ImageIO.read(new ByteArrayInputStream(imageBytes));
ImageIcon imgIcon = new ImageIcon(img);
JLabel label = new JLabel(imgIcon);
但 JPG2000 解码器未提供标准SDK,您应该使用here(Java Advanced Imaging)并使用正确的解码器来实现该格式..
答案 1 :(得分:3)
显然已经从Java Advanced Imaging(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
答案 2 :(得分: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不是为日常使用而设计的。
答案 3 :(得分:0)
使用Java库imageio-openjpeg(Apache 2许可),您可以将Jpeg2000文件(* .jp2)与Java的imageio API一起使用。它基于OpenJPEG(BSD许可证)。从2015年开始,OpenJPEG就成为Jpeg2000标准的参考软件。
如果要使用它,则需要imageio-openjpeg和OpenJPEG作为平台。