调整图片大小以适合 JLabel

2022-09-01 05:31:12

我试图让一张图片适合JLabel。我希望将图片尺寸缩小到更适合我的Swing JPanel。

我尝试使用setPreferredSize,但它不起作用。

我想知道是否有一个简单的方法来做到这一点?是否应为此目的缩放图像?


答案 1

大纲

以下是要遵循的步骤。

  • 将图片作为缓冲图像阅读。
  • 将 BufferedImage 的大小调整为另一个与 JLabel 大小相同的 BufferedImage。
  • 从调整大小的缓冲图像创建图像图标。

您不必设置 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);

答案 2

你可以试试:

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 快得多。

我建议您循环比较这两种解决方案。


推荐