将byte []转换为ImageIcon时发生NullPointerException错误

时间:2016-03-01 11:45:51

标签: java maven netbeans bytearray jlabel

我正在尝试将byte []放到netbeans maven Project上的JLabel上。我阅读了一些解决方案然后为我实现。但是,当我开始应用程序时,它给了我错误列表,如;

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:228)
    at org.tutev.envanterys.gui.finger.FrmFinger.btnShowImagesActionPerformed(FrmFinger.java:104)
    at org.tutev.envanterys.gui.finger.FrmFinger.access$000(FrmFinger.java:29)
    at org.tutev.envanterys.gui.finger.FrmFinger$1.actionPerformed(FrmFinger.java:55)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

请你帮助我,我的错误在哪里,我怎么能避免这个?这是我的代码:

 try {
            Finger finger = new Finger();
            FingerService fingerService = new FingerService();

            finger = fingerService.getImage(Long.parseLong("1"));

            byte[] image1 = finger.getImage1();

            ByteArrayInputStream bais = new ByteArrayInputStream(image1);
            BufferedImage img = ImageIO.read(bais);

            lblFinger1.setIcon(new ImageIcon(img));

        } catch (IOException ex) {
            Logger.getLogger(FrmFinger.class.getName()).log(Level.SEVERE, null, ex);
        }

当我调试应用程序时,我发现byte[]bais有数据,但BufferedImage img null

1 个答案:

答案 0 :(得分:0)

您必须检查您的数据是否真的是图像数据。

作为API文档:ImageIO读取方法的解释是;

  

作为解码提供的结果返回BufferedImage   从这些中自动选择ImageReader的InputStream   目前已注册。 InputStream包含在   ImageInputStream中。 如果没有注册的ImageReader声称能够   读取结果流,返回null 。当前缓存   来自getUseCache和getCacheDirectory的设置将用于控制   在创建的ImageInputStream中缓存。

     

此方法不会尝试查找可以读取的ImageReader   直接来自InputStream;可以使用完成   IIORegistry和ImageReaderSpi。

     

此方法在读取后不会关闭提供的InputStream   操作已经完成;这是打电话的责任   如果需要,关闭流。

Source