从数据库中提取图像(blob)并将其插入到Java框架中

时间:2014-02-19 17:28:10

标签: java mysql swing

我有一个带有表“Images”的数据库,其中包含一个字段“Img”,其中包含图像(类型为BLOB)。

我用这样的查询sql提取图像:

select img from images where id = 1

在java swing项目中,如何获取此查询的图像结果?

1 个答案:

答案 0 :(得分:4)

这应该有效

Blob blob = rs.getBlob("img");
int blobLength = (int) blob.length();  

byte[] bytes = blob.getBytes(1, blobLength);
blob.free();
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));

您可以选择如何将其添加到框架中。您可以将其添加到JLabel,也可以在JPanel上绘制它。只取决于您的要求和/或偏好。

  • 使用JLabel

    ImageIcon icon = new ImageIcon(bytes); // you can read straight from byte array
    JLabel label = new JLabel(icon);
    frame.add(label);
    
  • JPanel上绘画

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(img, 0, 0, getWidth(), getHeight(), this); 
        // img is the BufferedImage in the first code.
    }