如何使用getScaledImage缩放图像?

时间:2013-07-17 15:30:36

标签: java swing jlabel imageicon

这是我尝试使用getScaledInstance()缩放图像的方法。但它没有缩放图像。任何人都可以更正此代码吗?

BufferedImage image = ImageIO.read(new File("img.jpg"));
JLabel picLabel = new JLabel(new ImageIcon(image));
image=(BufferedImage)image.getScaledInstance(50,50, Image. SCALE_SMOOTH);
add(picLabel);

2 个答案:

答案 0 :(得分:4)

创建新图像不会更新ImageIcon。更改代码的顺序:

//BufferedImage image = ImageIO.read(new File("img.jpg"));
//JLabel picLabel = new JLabel(new ImageIcon(image));
Image image = ImageIO.read(new File("img.jpg"));
image=image.getScaledInstance(50,50, Image. SCALE_SMOOTH);
JLabel picLabel = new JLabel(new ImageIcon(image));
add(picLabel);

编辑:您发布的原始代码甚至都没有执行。您无法将缩放图像强制转换为BufferedImage。我更新了代码以解决执行问题。

答案 1 :(得分:1)

我做到了这一点,现在它的工作正常。 :)

    BufferedImage image = ImageIO.read(new File("img.jpg"));
    BufferedImage img = new BufferedImage(200,150,BufferedImage.TYPE_INT_RGB);
    img.getGraphics().drawImage(image,0,0,200,150,null);

    JLabel label = new JLabel(new ImageIcon(img));
    add(label);