显然,这是我用来将图像从磁盘映射到程序的代码。
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()
但仍然没有好处。而且我想询问我是否使用正确的代码来了解如何从磁盘中获取图像?我觉得这是错的。
答案 0 :(得分:1)
我遇到了类似的问题并在下面解决了问题:
步骤1:从文件系统中将图片作为BufferedImage读取。
BufferedImage image = null;
try {
image = ImageIO.read(new File("fileName.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
步骤2:创建一个大小为JLabel
的新BufferedImageBufferedImage img= image.getScaledInstance(label.width, label.height,
Image.SCALE_SMOOTH);
步骤3:从调整大小的BufferedImage(步骤2)
创建新的ImageIconImageIcon 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;
}