调整图片大小以适合 JLabel
我试图让一张图片适合JLabel。我希望将图片尺寸缩小到更适合我的Swing JPanel。
我尝试使用setPreferredSize,但它不起作用。
我想知道是否有一个简单的方法来做到这一点?是否应为此目的缩放图像?
我试图让一张图片适合JLabel。我希望将图片尺寸缩小到更适合我的Swing JPanel。
我尝试使用setPreferredSize,但它不起作用。
我想知道是否有一个简单的方法来做到这一点?是否应为此目的缩放图像?
以下是要遵循的步骤。
您不必设置 JLabel 的首选大小。将图像缩放到所需大小后,JLabel 将采用 ImageIcon 的大小。
BufferedImage img = null;
try {
img = ImageIO.read(new File("strawberry.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
Image dimg = img.getScaledInstance(label.getWidth(), label.getHeight(),
Image.SCALE_SMOOTH);
确保标签宽度和高度与原始图像的宽度和高度的比例相同。换句话说,如果图片为 600 x 900 像素,则缩放到 100 X 150。否则,您的图片将失真。
ImageIcon imageIcon = new ImageIcon(dimg);
你可以试试:
ImageIcon imageIcon = new ImageIcon(new ImageIcon("icon.png").getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT));
label.setIcon(imageIcon);
或者在一行中:
label.setIcon(new ImageIcon(new ImageIcon("icon.png").getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT)));
执行时间比 File 和 ImageIO 快得多。
我建议您循环比较这两种解决方案。