2016-03-01 2 views
0

Я пытаюсь поместить байт [] в JLabel на netbeans maven Project. Я прочитал некоторые решения, а затем осуществил их для меня. Однако, когда я запускаю приложение, он дает мне списки ошибок, такие как;Ошибка NullPointerException возникает при преобразовании байта [] в ImageIcon

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 является нулевой.

+0

Я признаю, я попал в ту часть, где вы сказали: «Я пытаюсь поставить байт [], чтобы JLabel ..» и мой разум кричал «ПОЧЕМУ !?» – Neil

ответ

0

Вы должны проверить, действительно ли ваши данные являются данными изображения.

В качестве документации API: объяснение метода чтения ImageIO;

Возвращает BufferedImage как результат декодирования прилагаемого InputStream с ImageReader автоматически выбранной из числа тех в настоящее время не зарегистрировано. InputStream завернут в ImageInputStream. Если зарегистрированный ImageReader не имеет права ссылаться на , прочитайте полученный поток, возвращается null. Текущий кеш настроек из getUseCacheand getCacheDirectory будет использоваться для управления кэшированием в созданном ImageInputStream.

Этот метод не пытается найти ImageReaders, который может читать непосредственно из InputStream; что может быть выполнено с использованием IIORegistry и ImageReaderSpi.

Этот метод не закрывает предоставленный InputStream после завершения операции чтения ; при звонке абоненту должно быть , если хотите, закройте поток.

Source