Как мне добавить изображение в проект Java с помощью Eclipse? - PullRequest
24 голосов
/ 14 апреля 2011

Я много читал по ссылкам SO и Google.

Мне еще предстоит выяснить, как правильно добавить изображение в проект eclipse gui, чтобы система распознала находкуЭто.Я знаю, что есть кое-что о CLASSPATH, но, вероятно, это не должно быть таким трудным делом.

Позвольте мне начать с описания того, что я делаю ... (Если кто-то сможет меня поправить, это будет оценено.)

Вот мой метод.

Я добавляю изображение с помощью «мастера импорта» (правый клик, «импорт», «общие сведения», «файл») в «каталог импорта», который я назвал «/ resources»

Eclipse автоматически создает папку с именем «resources» в древовидном представлении обозревателя пакетов eclipse.Прямо под записью «Библиотеки со ссылками».

Обратите внимание, что «ресурсы» не находятся в разделе «Библиотеки со ссылками», они находятся на том же уровне в дереве.

Затем я использую следующеекод:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("/resources/image.jpg");
Image logo = ImageIO.read(input);

И в этот момент я запускаю тестовую программу и получаю эту ошибку:

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
    at Test.main(Test.java:17)

Спасибо за любую помощь заранее!

Ответы [ 5 ]

36 голосов
/ 14 апреля 2011

Поместите изображение в исходную папку , а не в обычную папку. То есть: щелкните правой кнопкой мыши по проекту -> Создать -> Исходная папка. Поместите изображение в эту исходную папку. Тогда:

InputStream input = classLoader.getResourceAsStream("image.jpg");

Обратите внимание, что путь пропущен. Это потому, что изображение находится прямо в корне пути. Вы можете добавить папки в исходную папку, чтобы разбить ее дальше, если хотите. Или вы можете поместить изображение в существующую исходную папку (обычно она называется src).

0 голосов
/ 31 августа 2016

Если вы делаете это в затмении, есть несколько быстрых замечаний, что, если вы наведете указатель мыши на класс в вашем скрипте, он покажет диалог фокусировки, который говорит, что нажмите f2 для фокусировки.

для компьютерных приложений, используйте ImageIcon.и для пути, скажем,

ImageIcon thisImage = new ImageIcon("images/youpic.png");

укажите папку (изображения), затем разделите / и добавьте имя файла pic.

Надеюсь, это полезно.Если кто-то еще отправил это, я не прочитал.Так что ... да ... думал, подкрепление.

0 голосов
/ 09 марта 2016

Очень просто добавить изображение в проект и просмотреть изображение. Сначала создайте в своем проекте папку, которая может содержать изображения любого типа.

Затем щелкните правой кнопкой мыши Проект ->> Перейдите в Путь сборки ->> Настройте Путь сборки ->> Добавьте папку класса ->> Выберите папку (которую вы только что создали для хранения изображений) под именем проекта.

class Surface extends JPanel {

    private BufferedImage slate;
    private BufferedImage java;
    private BufferedImage pane;
    private TexturePaint slatetp;
    private TexturePaint javatp;
    private TexturePaint panetp;

    public Surface() {

        loadImages();
    }

    private void loadImages() {

        try {

            slate = ImageIO.read(new File("images\\slate.png"));
            java = ImageIO.read(new File("images\\java.png"));
            pane = ImageIO.read(new File("images\\pane.png"));

        } catch (IOException ex) {

            Logger.`enter code here`getLogger(Surface.class.getName()).log(
                    Level.SEVERE, null, ex);
        }
    }

    private void doDrawing(Graphics g) {

        Graphics2D g2d = (Graphics2D) g.create();

        slatetp = new TexturePaint(slate, new Rectangle(0, 0, 90, 60));
        javatp = new TexturePaint(java, new Rectangle(0, 0, 90, 60));
        panetp = new TexturePaint(pane, new Rectangle(0, 0, 90, 60));

        g2d.setPaint(slatetp);
        g2d.fillRect(10, 15, 90, 60);

        g2d.setPaint(javatp);
        g2d.fillRect(130, 15, 90, 60);

        g2d.setPaint(panetp);
        g2d.fillRect(250, 15, 90, 60);

        g2d.dispose();
    }

    @Override
    public void paintComponent(Graphics g) {

        super.paintComponent(g);
        doDrawing(g);
    }
}

public class TexturesEx extends JFrame {

    public TexturesEx() {

        initUI();
    }

    private void initUI() {

        add(new Surface());

        setTitle("Textures");
        setSize(360, 120);
        setLocationRelativeTo(null);        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                TexturesEx ex = new TexturesEx();
                ex.setVisible(true);
            }
        });
    }
}
0 голосов
/ 30 декабря 2014

Если у вас все еще есть проблемы с поиском файлов в Eclipse, попробуйте следующее:

  1. Убедитесь, что файл существует в соответствии с текущей средой выполнения, используя класс java.io.File дляполучите формат канонического пути и убедитесь, что (a) файл существует и (b) каков канонический путь.
  2. Проверьте рабочий каталог по умолчанию, напечатав в своем основном файле следующее:

        System.out.println("Working dir:  " + System.getProperty("user.dir"));
    

Для (1) выше я поместил следующий код отладки вокруг конкретного файла, к которому я пытался получить доступ:

            File imageFile = new File(source);
            System.out.println("Canonical path of target image: " + imageFile.getCanonicalPath());
            if (!imageFile.exists()) {
                System.out.println("file " + imageFile + " does not exist");
            }
            image = ImageIO.read(imageFile);                

По какой-то причине я проигнорировалбольшинство других постов говорят мне поместить файлы изображений в «src» или в какой-то другой вариант, так как я убедился, что система просматривает корень иерархии каталогов проекта Eclipse (например, $ HOME / workspace / myProject).

Наличие изображений в src / (которое автоматически копируется в bin /) не помогло Eclipse Luna.

0 голосов
/ 27 января 2012

Вы можете восстановить изображение и буквально найти файл src вашего проекта и добавить его к нему при сохранении.Для меня я должен был пойти в netbeans и найти свой проект, и когда он появился, у него было 3 файла, src был последним.Не нажимайте ни на одну из них, просто сохраните свою фотографию там.Это должно работать.Теперь изменение размера может быть другой проблемой, над которой я сейчас работаю lol

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...