0

这就是我尝试使用 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);
4

2 回答 2

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。我更新了代码以解决执行问题。

于 2013-07-17T15:35:35.043 回答
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);
于 2013-07-17T17:04:47.633 回答