Bilder einlesen mit ImageIO

asipak4you

Erfahrenes Mitglied
tag auch,

ich verzweifel momentan an der Klasse ImageIO. Ich schaffe es einfach nich damit Bilder einzulesen. Der Compiler meckert ständig:
"javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at TD.<init>(TD.java:129)
at TD.main(TD.java:183)"

so sieht der code zu einlesen aus:
Code:
public class TD extends Frame implements Runnable {	

//
//....gekürzt ... 
//
//texture
Image gras, boden_senkrecht, boden_horizontal, kurve_or, kurve_ru, kurve_ul, kurve_lo;

try {			
			boden_senkrecht = ImageIO.read(new File("bilder/boden_25x25_senk.gif"));
			boden_horizontal = ImageIO.read(new File("bilder/boden_25x25_hori.gif"));
			gras = ImageIO.read(new File("bilder/gras_25x25.gif"));

		} catch(IOException ex) {
		    ex.printStackTrace(); 		   
		} 

//
//....gekürzt ... 
//

}
(wenn ihr mehr braucht, einfach melden)

ich weiß einfach nich was ich falsch mache, wenn ich versuche die Grafiken mit
Code:
gras = Toolkit.getDefaultToolkit().getImage("bilder/gras_25x25.gif");
einzulesen, kann ich sie mit g.drawImage(gras,0, 0, this); trotzdem nicht zeichnen.

eine Ausgabe mit

System.out.println(gras);

ergibt

sun.awt.image.ToolkitImage@1cf8583

ist das ein zu erwartender Wert? kenne mich nicht so aus.

Danke schonmal im voraus!
 
Moin,

also die Fehlermeldung "unknown Source" scheint ja daraufhin zu deuten, dass er entweder das angegebene Verzeichnis oder die Dateien selbst nicht findet ....

Liegt denn "Bilder" direkt unterhalb Deines Projektverzeichnisses

Versuch' es mal mit
Code:
URL java.lang.Class.getResource(String name)

Hilfreich kann auch sein, statt des Image ein BufferedImage zu verwenden!

Gruß
Klaus

[EDIT] eventuell hilft auch dies: http://www.tutorials.de/forum/java-grundlagen/317913-imageio.html
 
Zuletzt bearbeitet:
Hallo,

danke für deine Antwort. Ich habe natürlich mehrmals überprüft ob das Bild exisitert, habe es sogar mal mit einer absoluten pfadangabe versucht.
Auch mit URL hab ich es getestet, dasselbe Ergebnis. Habe dann die neueste Java-Version installiert, keine Änderung. Auch ImageBuffered als Typ habe ich mehrmals verwendet.

meine Ordnerstruktur (arbeite mit Eclipse)
Code:
worrkspace
|
|- bin
    |- class-Dateien
    |-bilder
        |- gras_25x25.gif
        |- ....
|- src
    |- TD.java
|- .classpath
|- .project
Ich habe das Bild mal Testweise in jedes Verzeichnis kopiert, aber immer noch die selbe Fehlermeldung.

Habe dann von Frame auf Applet umgestellt und die Bilder dann so ausgelesen
Code:
gras = Toolkit.getDefaultToolkit().getImage("bilder/gras_25x25.gif");
Funktioniert ohne Problem und gezeichnet werden sie auch.
Aber warum funktioniert es bei Frames nicht (also warum kann ich sie dann nicht zeichnen) und wieso nicht mit ImageIO einlesen. :(
Falls jemand noch eine Idee hat, immer her damit.
 

Neue Beiträge

Zurück