首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullPointerException从SQL映像binaryStream的InputStream创建ImageIcon

NullPointerException从SQL映像binaryStream的InputStream创建ImageIcon
EN

Stack Overflow用户
提问于 2015-11-20 18:01:46
回答 1查看 220关注 0票数 0

我正在构建一个显示来自Server数据库的映像的应用程序,这里的代码如下:

我就是这样从存储过程中获得BinaryStream的。

代码语言:javascript
复制
public static ImageIcon getImageBytes(int id){
    InputStream is = null;
    ImageIcon img = null;
    try{

        String query = "exec [dbo].[sp_ObtenerImagen] '"+id+"'";
                     Statement state = Constant.Conecctions().createStatement();
                     ResultSet rs = state.executeQuery(query);
        while(rs.next()){
            is= rs.getBinaryStream(1);
        }  
    }catch(SQLException e){

    }
    try {
        img = new ImageIcon(ImageIO.read(is));
    } catch (IOException ex) {
        Logger.getLogger(D_Clientes.class.getName()).log(Level.SEVERE, null, ex);
    }
    return img;
}

当我将图像显示到一个JPanel中时,我需要一个Jlabel,所以我创建了以下内容:

代码语言:javascript
复制
public static JLabel bytesToIMG(int idCliente) {
        JLabel lab = new JLabel(D_Clientes.getImageBytes(idCliente));
        return lab;
}

因此,现正尝试向事务委员会展示这幅图片:

代码语言:javascript
复制
panelImagen.removeAll();
                panelImagen.add(OperacionImagen.bytesToIMG(Integer.parseInt(tableClientes.getModel().getValueAt(selectedRow, 0).toString())));
                panelImagen.revalidate();
                panelImagen.repaint();

我接到java.lang.NullpointerException的电话:img = new ImageIcon(ImageIO.read(is));

并在Object o = image.getProperty("comment", imageObserver);类上引用ImageIcon。

请帮帮忙。

编辑。

在这里,整个stackTrace

代码语言:javascript
复制
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:240)
at Datos.D_Clientes.getImageBytes(D_Clientes.java:242)
at Validations.OperacionImagen.bytesToIMG(OperacionImagen.java:71)
at Presentacion.Gestion_Clientes.tableClientesMouseClicked(Gestion_Clientes.java:410)
at Presentacion.Gestion_Clientes.access$700(Gestion_Clientes.java:14)
at Presentacion.Gestion_Clientes$8.mouseClicked(Gestion_Clientes.java:308)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
at java.awt.Component.processMouseEvent(Component.java:6538)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4534)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-21 18:24:16

我只是在方法中使用Blob:

代码语言:javascript
复制
 public static BufferedImage getImageBytes(int id) {
    BufferedImage image =null;
    byte[] imgData = null;
    try {

        String query = "exec [dbo].[sp_ObtenerImagen] '" + id + "'";
        Statement state = Constant.Conecctions().createStatement();
        ResultSet rs = state.executeQuery(query);
        while (rs.next()) {
            //is = rs.getBinaryStream(1);
            Blob img = rs.getBlob(1);
            imgData = img.getBytes(1, (int) img.length());
            try {
                image = ImageIO.read(new ByteArrayInputStream(imgData));
                //yourJLabelInstance.setIcon(new ImageIcon(image));
            } catch (IOException ex) {
                Logger.getLogger(D_Clientes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }

    return OperacionImagen.resize(image, 200, 200);
}

然后将其插入到Jlabel中,然后插入到JPanel中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33833197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档