Я не могу загрузить изображение в объект BufferedImage с помощью нового файла() без полного пути к изображению.
Когда я пытаюсь загрузить image.png в объект BufferedImage с помощью new File(), я сталкиваюсь с результатами:
public class PicturePanel extends JPanel {
BufferedImage image=null;
public PicturePanel() {
try {
image = ImageIO.read(new
/*Works fine with full path: */
File("C://Users//benjamin//Desktop//Pictures//whiteFish.png"));
/*fail - throw an exception: */
//image = ImageIO.read(new
File("//RandomThingsInGui/whiteFish.png"));
} catch (IOException e) { e.printStackTrace(); }
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0,0,500,250,null);
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.add(new PicturePanel());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setSize(600,400);
f.setVisible(true);
}
Мне нужно знать, есть ли способ (и как) загрузить изображение из импортированного пути (я имею в виду изнутри eclipse) или когда я использую новый файл (...), я должен использовать полный путь.
спасибо за помощников :)
можешь попробовать удалить первый //
в //RandomThingsInGui
и посмотреть, сработает ли это. Также по какому пути находится папка RandomTings.
Возможный дубликат Как загрузить файл из папки ресурсов?
Скопируйте файл «whiteFish.png» в каталог «RandomThingsInGui». Вы можете попробовать это?
try {
// AS-IS
//image = ImageIO.read(new File("//RandomThingsInGui/whiteFish.png"));
// TO-BE (replace '//' to '/')
image = ImageIO.read(new File("/RandomThingsInGui/whiteFish.png"));
} catch (IOException e) {
e.printStackTrace();
}
Можете ли вы попробовать переместить файл в результат System.getProperty("user.dir")
? Я имею в виду, new File(System.getProperty + "/" + your file name)
попробуйте это решение. stackoverflow.com/questions/9544737/read-file-from-assets