webentwicklung-frage-antwort-db.com.de

Wie füge ich ein Bild mit Eclipse in ein Java-Projekt ein?

Ich habe viel über SO und Google-Links gelesen.

Ich muss noch herausfinden, wie man ein Bild korrekt in ein Eclipse-GUI-Projekt einfügt, und das System erkennt es. Ich weiß, es gibt ein bisschen Mumbojumbo über CLASSPATH, aber es sollte wahrscheinlich nicht so schwierig sein.

Lassen Sie mich zunächst beschreiben, was ich tue ... (Wenn mich jemand korrigieren könnte, wäre ich dankbar.)

Hier ist meine Methode. 

Ich füge das Image mit dem "Importassistenten" (Rechtsklick, "Importieren", "Allgemein", "Datei") in ein "Importverzeichnis" ein, das ich "/ resources" nannte.

Eclipse erstellt automatisch einen Ordner mit dem Namen "resources" in der Strukturansicht des Eclipse-Paket-Explorers. Direkt unter dem Eintrag für "Referenzierte Bibliotheken".

Beachten Sie, dass "Ressourcen" nicht unter "Referenzierte Bibliotheken" liegt, sondern auf derselben Ebene in der Baumstruktur.

Ich verwende dann den folgenden Code:

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

Und an diesem Punkt führe ich das Testprogramm aus und erhalte diesen Fehler:

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

Vielen Dank für jede Hilfe im Voraus!

23
ct_

Legen Sie das Bild in einen source-Ordner , nicht in einen normalen Ordner. Das heißt: Klicken Sie mit der rechten Maustaste auf Projekt -> Neu -> Quellordner. Legen Sie das Bild in diesen Quellordner. Dann:

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

Beachten Sie, dass der Pfad weggelassen wird. Das liegt daran, dass sich das Bild direkt in der Wurzel des Pfads befindet. Sie können Ordner unter Ihrem Quellordner hinzufügen, um ihn weiter aufzuschlüsseln. Oder Sie können das Bild in Ihrem vorhandenen Quellordner ablegen (normalerweise als src bezeichnet).

35
Jeff

Wenn Sie immer noch Probleme mit Eclipse haben, Ihre Dateien zu finden, können Sie Folgendes versuchen:

  1. Stellen Sie sicher, dass die Datei gemäß der aktuellen Ausführungsumgebung vorhanden ist, indem Sie die Klasse Java.io.File verwenden, um ein kanonisches Pfadformat abzurufen. Stellen Sie sicher, dass (a) die Datei vorhanden ist und (b) der kanonische Pfad ist.
  2. Überprüfen Sie das Standardarbeitsverzeichnis, indem Sie Folgendes in Ihrem Hauptverzeichnis drucken: 

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

Für (1) oben habe ich die spezifische Datei, auf die ich zugreifen wollte, mit dem folgenden Code versehen:

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

Aus irgendeinem Grund ignorierte ich am Ende die meisten anderen Beiträge, in denen ich aufgefordert wurde, die Bilddateien in "src" oder in eine andere Variante zu setzen, da ich überprüfte, dass das System das Stammverzeichnis der Eclipse-Projektverzeichnishierarchie (z HOME/Arbeitsbereich/Mein Projekt).

Mit den Bildern in src/(das automatisch in bin/kopiert wird) hat Eclipse Luna den Trick nicht getan.

0
rholmes

Es ist sehr einfach, ein Bild in ein Projekt einzufügen und das Bild anzuzeigen. Erstellen Sie zunächst einen Ordner in Ihrem Projekt, der alle Arten von Bildern enthalten kann.

Klicken Sie dann mit der rechten Maustaste auf Projekt ->>Gen zum Buildpfad ->>, um Build Path ->> zu erstellen. Klassenordner ->>. Wählen Sie Ihren Ordner (den Sie gerade erstellt haben, um die Bilder zu speichern) unter dem Projektnamen. 

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
Sekhar

Sie können das Bild erneut speichern und die SRC-Datei Ihres Projekts buchstäblich finden und sie beim Speichern hinzufügen. Für mich musste ich zu netbeans gehen und mein Projekt finden und als das aufkam, hatte es 3 Dateien, die src die letzte war. Klicken Sie nicht auf eines der Bilder, sondern speichern Sie Ihr Bild dort. Das sollte funktionieren. Nun, die Größenänderung ist vielleicht ein anderes Problem und ich arbeite gerade an lol

0
cubanpete13

Wenn Sie dies in Eclipse tun, gibt es einige kurze Hinweise, die besagen, dass wenn Sie mit der Maus über eine Klasse in Ihrem Skript fahren, ein Fokusdialogfeld angezeigt wird. 

verwenden Sie für Computer-Apps ImageIcon. und für den Pfad sagen, 

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

geben Sie den Ordner (Bilder) an, trennen Sie ihn dann mit/und fügen Sie den Namen der Bilddatei hinzu. 

Ich hoffe das ist hilfreich. Wenn jemand anderes es veröffentlicht hat, habe ich nicht durchgelesen. Also ... ja ... Gedankenverstärkung. 

0
SolubleHook