Есть ли способ загрузить (с новым файлом()) изображение, которое было импортировано в папку проекта?

Я не могу загрузить изображение в объект BufferedImage с помощью нового файла() без полного пути к изображению.

Когда я пытаюсь загрузить image.png в объект BufferedImage с помощью new File(), я сталкиваюсь с результатами:

  1. Успех - когда я пишу весь путь (C://Users//benja//Desktop/...), он работает нормально
  2. Ошибка - когда я пишу путь к изображению, которое я импортировал в свой проект. Есть ли способ заставить его работать, даже если я использую новый файл (...)?
    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) или когда я использую новый файл (...), я должен использовать полный путь.

спасибо за помощников :)

попробуйте это решение. stackoverflow.com/questions/9544737/read-file-from-assets

VSB 08.04.2019 17:13

можешь попробовать удалить первый // в //RandomThingsInGui и посмотреть, сработает ли это. Также по какому пути находится папка RandomTings.

M.Waqas Pervez 08.04.2019 17:15

Возможный дубликат Как загрузить файл из папки ресурсов?

Progman 08.04.2019 20:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Скопируйте файл «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)

Madplay 10.04.2019 18:29

Другие вопросы по теме