Подтвердить что ты не робот

Как мне добавить изображение в проект java с eclipse?

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

Мне еще предстоит выяснить, как правильно добавить изображение в проект eclipse gui, таким образом, чтобы система распознала его. Я знаю, что есть немного mumbojumbo о 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)

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

        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.

Ответ 4

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

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

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);
            }
        });
    }
}

Ответ 5

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

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

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

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

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