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 列の名前が「picture」であるとしましょう。

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 に答える