1

我正在从数据库中检索图像,该图像需要安装在大小为 300 x 300 的 JLabel 中。在此代码中,图像未调整大小,而是其中一部分显示在 JLabel 中:

ResultSet r;

r = s.executeQuery("select * from  employee where emp_name='"+user+"'");

boolean v=r.next();
if (v==true) {
    add(r.getString("designation"));//to call add function 


    InputStream is = r.getBinaryStream(3);
    BufferedImage bimg = ImageIO.read(is);


    bimg.getScaledInstance(300,300,Image.SCALE_SMOOTH);

    ImageIcon n=new ImageIcon();
    n.setImage(bimg);

    l[1].setIcon(n);
}   
4

2 回答 2

2

getScaledInstance()不修改原始图像。做

Image bimg = ImageIO.read(is);
bimg = bimg.getScaledInstance(300,300,Image.SCALE_SMOOTH);

反而。

于 2013-07-20T12:48:26.483 回答
1

假设您的 BLOB 列名称是“图片”。

public void ReadImage(String user, JLabel jl){
        try{

            String query = "SELECT picture FROM employee WHERE emp_name='"+user+"'";
            pst = con.prepareStatement(query);
            rs = pst.executeQuery();

            byte[] imageData = rs.getBytes(1);
            ImageIcon ii = new ImageIcon(imageData);
            Image image = ii.getImage();
            image = image.getScaledInstance(300, 300, Image.SCALE_SMOOTH);
            ii = new ImageIcon(image);
            jl.setIcon(ii);

        }
        catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }
    }
于 2015-04-15T19:27:20.190 回答