我正在尝试将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 。
答案 0 :(得分:0)
您必须检查您的数据是否真的是图像数据。
作为API文档:ImageIO读取方法的解释是;
作为解码提供的结果返回BufferedImage 从这些中自动选择ImageReader的InputStream 目前已注册。 InputStream包含在 ImageInputStream中。 如果没有注册的ImageReader声称能够 读取结果流,返回null 。当前缓存 来自getUseCache和getCacheDirectory的设置将用于控制 在创建的ImageInputStream中缓存。
此方法不会尝试查找可以读取的ImageReader 直接来自InputStream;可以使用完成 IIORegistry和ImageReaderSpi。
此方法在读取后不会关闭提供的InputStream 操作已经完成;这是打电话的责任 如果需要,关闭流。