Comment puis-je ajouter une image dans un projet java avec eclipse?

j'ai beaucoup lu sur les liens SO et Google.

je n'ai pas encore trouver comment correctement ajouter une image dans une éclipse gui projet de telle manière que le système reconnaîtra le trouver. Je sais qu'il y a du mumbojumbo à propos de CLASSPATH mais ça ne devrait pas être si difficile à faire.

Permettez-moi de commencer par décrire ce que je fais...(Si quelqu'un pouvait me corriger, ce serait apprécié.)

Voici ma méthode.

j'ajoute le de l'image à l'aide de la "assistant d'importation" (clic droit, "importer", "général", "fichier") dans un "répertoire d'importation" j'ai appelé "ressources"

Eclipse crée automatiquement un dossier appelé "resources" dans l'arborescence de l'Explorateur de paquets eclipse. Sous la rubrique "bibliothèques référencées".

Remarque, "ressources" n'est pas en vertu de la "Cité des Bibliothèques", c'est au même niveau dans l'arborescence.

j'utilise alors le code suivant:

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

Et en ce moment, je exécutez le programme de test et obtenir cette erreur:

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

Merci pour toute aide à l'avance!

23
demandé sur ct_ 2011-04-14 05:07:33

5 réponses

placez l'image dans un dossier source, pas un dossier ordinaire. C'est-à-dire: cliquez avec le bouton droit de la souris sur le dossier project - > New - > Source. Placez l'image dans ce dossier source. Alors:

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

Notez que le chemin est omis. C'est parce que l'image est directement à la racine du chemin d'accès. Vous pouvez ajouter des dossiers dans votre dossier source de décomposer davantage si vous le souhaitez. Ou vous pouvez placer l'image sous votre dossier source existant (généralement appelé src).

35
répondu Jeff 2011-04-14 01:18:45

Vous pouvez enregistrer à nouveau l'image et littéralement trouver le fichier src de votre projet et l'ajouter à ce que vous enregistrez. Pour moi, je devais aller à netbeans et trouvé mon projet, et quand cela arrive, il avait 3 fichiers crs était le dernier. Ne cliquez sur aucun d'eux il suffit de sauvegarder votre photo. Cela devrait fonctionner. Maintenant redimensionner il peut être un problème différent et un que je travaille maintenant lol

0
répondu cubanpete13 2012-01-26 22:24:48

si vous avez encore des problèmes avec Eclipse pour trouver vos fichiers, vous pouvez essayer ce qui suit:

  1. vérifiez que le fichier existe selon l'environnement d'exécution courant en utilisant java.io.Classe de fichier pour obtenir un format de chemin canonique et vérifier que (a) le fichier existe et (b) Quel est le chemin canonique.
  2. vérifiez le répertoire de travail par défaut en imprimant ce qui suit dans votre main:

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

Pour les (1) ci-dessus, j'ai mis la suite de débogage de code autour de fichier spécifique, j'essayais d'accès:

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

pour une raison quelconque, j'ai fini par ignorer la plupart des autres messages me disant de mettre les fichiers image dans "src" ou une autre variante, car j'ai vérifié que le système regardait la racine de la hiérarchie du répertoire du projet Eclipse (par exemple, $HOME/workspace/myProject).

avoir les images dans src/ (qui est automatiquement copié dans bin/) n'a pas fait l'affaire sur Eclipse Luna.

0
répondu rholmes 2014-12-30 18:19:38

Il est très simple d'ajouter une image dans le projet et afficher l'image. D'abord créer un dossier dans votre projet qui peut contenir n'importe quel type d'images.

puis clic droit sur le projet ->>Aller au Build Path ->> configurer le chemin de construction ->> ajouter un dossier de Classe ->> choisissez votre dossier (que vous venez de créer pour stocker les images) sous le nom de projet.

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
répondu Sekhar 2016-03-09 16:29:10

si vous le faites dans eclipse, il y a quelques notes rapides que si vous faites tourner votre souris sur une classe dans votre script, il affichera un dialogue de focus qui dit hit f2 Pour focus.

pour les applications informatiques, utilisez ImageIcon. et pour le chemin d'accès de dire,

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

spécifier le dossier (les images) puis séparer avec / et ajouter le nom du fichier pic.

j'espère que cela est utile. Si quelqu'un d'autre l'a posté, Je ne l'ai pas lu. Si...oui.. pensée renforcement.

0
répondu SolubleHook 2016-08-31 03:21:56