Извлечение изображения из базы данных и непосредственное чтение его на панели - PullRequest
0 голосов
/ 14 сентября 2018

Я извлекаю изображение из базы данных и непосредственно считываю его на панель с помощью метода Imageio.read с помощью ссылочной переменной Bufferimage, но это дает мне ошибку javax.imageio.IIOException: Не удается прочитать входной файл! Iне понимаю, почему это дает мне ошибку.

Код моей базы данных:

public class ValidateClass {

public static byte[] validateImageAndEmpId(Connection con, String empId) {
    byte[] imagedata = null;

    try {
        PreparedStatement ps = con.prepareStatement("select image from fingerprint where empId=?");
        ps.setString(1, empId);
        ResultSet rs = ps.executeQuery();
        if (rs.next()) {
            Blob blob = rs.getBlob("image");
            imagedata = blob.getBytes(1, (int) blob.length());

            System.out.println("Length" + imagedata);

            System.out.println("testlen" + imagedata.length);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return imagedata;
}
}

Код, где я вызываю этот метод:

      public CEntityForm() {

    jButtonStep1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(ActionEvent e) {
            jButtonStep3_actionPerformed(e);
        }
    });

    /*jButtonStep1 for 1 to 1 match fingerprint matching which is not in use */
    jtool.add(jButtonStep1);

    try {
        // Taking picture1
        //Set picture new
        m_bimage1 = ImageIO.read(new File(new java.io.File("").getAbsolutePath() + "\\L1Right.Jpeg"));
        m_panel1.setBufferedImage(m_bimage1);
        //Send image for skeletinization
        m_finger1.setFingerPrintImage(m_bimage1);
        finger1 = m_finger1.getFingerPrintTemplate();
        //See what skeletinized image looks like
        m_bimage1 = m_finger1.getFingerPrintImageDetail();
        m_panel1.setBufferedImage(m_bimage1);

        //fingerprint matching details of finger 1 in number format so commented jtextfield2
        // jTextField1.setText(m_finger1.ConvertFingerPrintTemplateDoubleToString(finger1));
        /*end of picture 1 details*/
        // Taking picture2
        //Set picture new
        Connection con = Conn.getConnection();

        byte[] bytearry = ValidateClass.validateImageAndEmpId(con, $emp_Id);
        // System.out.println("Input="+input);
        m_bimage2 = ImageIO.read(new ByteArrayInputStream(bytearry));
        //   m_bimage2 = ImageIO.read(new File(new java.io.File("").getAbsolutePath() + "\\L1Right_Copy.Jpeg"));
        m_panel2.setBufferedImage(m_bimage2);
        //Send image for skeletinization
        m_finger2.setFingerPrintImage(m_bimage2);
        finger2 = m_finger2.getFingerPrintTemplate();
        //See what skeletinized image looks like
        m_bimage2 = m_finger2.getFingerPrintImageDetail();
        m_panel2.setBufferedImage(m_bimage2);

        //fingerprint matching details of finger 2 in number format so commented jtextfield2
        //jTextField2.setText(m_finger2.ConvertFingerPrintTemplateDoubleToString(finger2));
        /*end of picture 1 details*/
    } catch (Exception ex) {
        ex.printStackTrace();
   JOptionPane.showMessageDialog(null, ex.getMessage(), "Error",    JOptionPane.PLAIN_MESSAGE);
    }
    this.getContentPane().setLayout(new GridLayout(2, 2));
    this.getContentPane().add(m_panel1);
    this.getContentPane().add(m_panel2);
    this.getContentPane().add(jtool);

    this.setTitle("Entity");
    this.setSize(new Dimension(800, 700));
}

Основной метод

      public class Testmain {
public static void main(String[] args) {
    try{
          new CEntityForm().setVisible(true);

    }catch(Exception e){
        e.printStackTrace();
    }

}

Вывод:

     javax.imageio.IIOException: Can't read input file!
     at javax.imageio.ImageIO.read(ImageIO.java:1301)
     at main.CEntityForm.<init>(CEntityForm.java:81)
     at main.Testmain.main(Testmain.java:18)

1 Ответ

0 голосов
/ 14 сентября 2018

Похоже, исключение исходит от вашего другого звонка на ImageIO.read();первый в конструкторе.Там вы передаете файл, который предположительно не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...