Как мне добавить изображение в проект 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)
Спасибо за любую помощь заранее!
Ответы
Ответ 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.
Надеюсь, это полезно. Если кто-то еще отправил его, я не прочитал. Итак... да.. подумал подкрепление.