2016-05-12 5 views
-1

По-видимому, это мой код, который я использовал, чтобы получить изображение с моих дисков в мою программу.Как изменить размер изображения в JAVA, чтобы соответствовать jLabel?

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

я столкнулся с подобной проблемой и сделал ниже обходной путь:

Шаг1: Читать изображение как BufferedImage из файловой системы.

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

Шаг2: Создать новый BufferedImage, который является размер JLabel

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

Step3: Создать новую ImageIcon с измененным размером BufferedImage (Шаг 2)

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; 
    } 
+0

Вы не возражаете, если я попрошу вас разработать его больше? Как реализовать его в моем коде выше? Должен ли я переписать весь метод? Прошу прощения за это, но большое спасибо за помощь и за ваш быстрый ответ. Очень ценится. – poorgrammer

+0

@poorgrammer Просьба проверить измененный ответ –

+0

Эй, @ Рыцарь Дарк. Пожалуйста, проверьте, что я сделал. Я думаю, что я перепутал, и я все еще не могу понять, что ты говоришь мне, так что я это сделал. Пожалуйста, проверьте [this out] (http://pastebin.com/PK1uCk46). Я получаю исключение нулевого указателя. – poorgrammer

Смежные вопросы