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