如何在JAVA中调整图像大小以适应jLabel?

时间:2016-05-12 04:07:09

标签: java

显然,这是我用来将图像从磁盘映射到程序的代码。

public void getVehicleImage(){
    FileDialog fd = new FileDialog(this);
    fd.setFile("*.jpg; *.jpg; *.png; *.gif");
    fd.show();
    vehicle_path = fd.getDirectory()+fd.getFile();
    vehicleFileName.setText(vehicle_path = fd.getFile());
    vehicleImagePath.setText(vehicle_path = fd.getDirectory()+fd.getFile());
    image.setIcon(new ImageIcon(vehicle_path));
}

如何使图像适合我的jLabel大小?我尝试过使用

getScaledInstance()

但仍然没有好处。而且我想询问我是否使用正确的代码来了解如何从磁盘中获取图像?我觉得这是错的。

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题并在下面解决了问题:

步骤1:从文件系统中将图片作为BufferedImage读取。

BufferedImage image = null;
try {
    image = ImageIO.read(new File("fileName.jpg"));
} catch (IOException e) {
    e.printStackTrace();
}

步骤2:创建一个大小为JLabel

的新BufferedImage
BufferedImage img= image.getScaledInstance(label.width, label.height,
        Image.SCALE_SMOOTH);

步骤3:从调整大小的BufferedImage(步骤2)

创建新的ImageIcon
ImageIcon imageIcon = new ImageIcon(img);

在您的情况下,创建一个辅助方法并在创建ImageIcon时调用它,如下所示:

public void getVehicleImage(){
 ...................
   image.setIcon(new ImageIcon(getScaledImage(vehicle_path)));//call helper here
}

这可以是辅助功能:

public BufferedImage getScaledImage(String imagePath){
        BufferedImage image = null;
        try {
            image = ImageIO.read(new File("fileName.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }

        BufferedImage img= image.getScaledInstance(label.width, label.height,
                Image.SCALE_SMOOTH);

        return img;
    }
相关问题