在Java中将字节数组(byte )转换为Image

我有一个byte[] ,我想转换为图像并在标签中显示图像。 byte []是jpeg 2000格式。 我已经尝试了下面的代码,但它返回null:

 InputStream in = new ByteArrayInputStream(bytearray); BufferedImage image = ImageIO.read(in); 

图像值返回null

我希望能够在如下标签中显示图像:

 jLabel.setIcon(new ImageIcon(image)); 

谢谢

要将字节数组(即byte[]转换为Image ,请使用getImage() 。 可能最简单的方法是使用ImageIcon(byte[])构造函数实例化ImageIcon ,然后调用getImage() 。 这在下面的方法中说明,特别是最后一行:

 public Image createImage(){ //ccurve.png byte[] b = {-119, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 15, 0, 0, 0, 15, 8, 6, 0, 0, 0, 59, -42, -107, 74, 0, 0, 0, 64, 73, 68, 65, 84, 120, -38, 99, 96, -64, 14, -2, 99, -63, 68, 1, 100, -59, -1, -79, -120, 17, -44, -8, 31, -121, 28, 81, 26, -1, -29, 113, 13, 78, -51, 100, -125, -1, -108, 24, 64, 86, -24, -30, 11, 101, -6, -37, 76, -106, -97, 25, 104, 17, 96, -76, 77, 97, 20, -89, 109, -110, 114, 21, 0, -82, -127, 56, -56, 56, 76, -17, -42, 0, 0, 0, 0, 73, 69, 78, 68, -82, 66, 96, -126}; return new ImageIcon(b).getImage(); } 

我认为这可以用于pnggifbmpjpg图像。 字节数组也不必硬编码,如本例所示。

如果您想要ImageIcon而不是Image ,请不要调用getImage()

 public ImageIcon createImageIcon(){ //ccurve.png byte[] b = {-119, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 15, 0, 0, 0, 15, 8, 6, 0, 0, 0, 59, -42, -107, 74, 0, 0, 0, 64, 73, 68, 65, 84, 120, -38, 99, 96, -64, 14, -2, 99, -63, 68, 1, 100, -59, -1, -79, -120, 17, -44, -8, 31, -121, 28, 81, 26, -1, -29, 113, 13, 78, -51, 100, -125, -1, -108, 24, 64, 86, -24, -30, 11, 101, -6, -37, 76, -106, -97, 25, 104, 17, 96, -76, 77, 97, 20, -89, 109, -110, 114, 21, 0, -82, -127, 56, -56, 56, 76, -17, -42, 0, 0, 0, 0, 73, 69, 78, 68, -82, 66, 96, -126}; return new ImageIcon(b); } 

然后你可以调用jlabel.setIcon(createIconImage());

使用Java Advanced Imaging处理JPEG2000图像。

类似的问题: 在java中读取jpeg2000文件

 ServletOutputStream out = response.getOutputStream(); out.write(user.getBytes()); 

上面是它在过去的工作方式,用户只需将字符串图片存储在字节数组中。 servlet意识到这一点并输出图像。