ImageIO Endung mitgeben

Network

Top Contributor
Hi,

kann man ImageIO.read() die richtige Endung versuchen mitzugeben?
Mein Programm liest aus irgendeinem Grund manchmal mit dem falschen ImageIO Reader das gewünschte Programm aus.
Jedenfals kann ich mir sonst nicht erklären warum bei jedem 2. Programmstart die Meldung kommt "Empty Region"
mit folgender Zeile:
"at com.sun.imageio.plugins.wbmp.WBMPImageReader.read(Unknown Source)"
WBMP ist doch was anderes als PNG oder?

Vielen Dank schonmal
 
Zuletzt bearbeitet:

fastjack

Top Contributor
ImageIO.read() liest Bilder und keine Programme. Soweit ich weis, gibt man dort den vollständigen Bildnamen an, also mit Erweiterung. Ins Schleudern kommt die Methode allerdings dann, wenn man ein Bild mit einer falschen Änderung speichert, oder das Format nicht unterstützt wird.
 

Network

Top Contributor
Danke,
aber leider bemerke ich gerade das es ImageIO irgendwie nicht hinkriegt verschiedene Bildformate einzulesen hintereinander (???)
Also ich hab mal so einen Test gemacht, mit createImageInputStream()
ImageIO: createImageInputStream(Object input) : ImageIOjavax.imageioJava by API

Wenn ich jetzt ein PNG-Bild einlese, ist die Ausgabe selten mal "wbmp".
Besonderst wenn ich Bilder über "Plugins" einlese kommt zu 80% wbmp zurück Oo
Bsp. TGA, oder PNM.

Rein theoretisch könnte ich ja den Code auf der angegebenen Seite so verändern, dass der solange suchen soll, bis die gewünschte Dateiendung zurück kommt und diesen Reader dann verwenden. Aber ist nicht gerade sehr schön
 

slawaweis

Bekanntes Mitglied
die Dateiendung hilft da wenig. ImageIO werten immer die Magic Number aus:

Magische Zahl (Informatik) ? Wikipedia

welche am Anfang der Datei steht. Nach diesem Wert wird ein passender Decoder gesucht. Es können auch mehrere Decoder dieses Format unterstützen, in diesem Fall muss man selber auswählen, welcher verwendet werden soll. Ansonsten wird immer der erste genommen und der kann nicht unbedingt der richtige sein.

So muss man immer schauen, was für eine Magic Number in der Datei steht. Bei mir wurden PNGs und BMPs bis jetzt mit ImageIO immer richtig geladen.

Slawa
 

Network

Top Contributor
Japp, ich hab jetzt nochmal danach geschaut.
Wenn ich kurz hintereinander verschiedene Bildformate einlese, versucht er es manchmal mit dem Bildformat davor.
Ich hab jetzt "setUseCache(false);" gesetzt, und es funktioniert :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Bild Beschreibung mit ImageIO speichern AWT, Swing, JavaFX & SWT 1
M "ImageIO.read()" liest Bild nicht richtig ein AWT, Swing, JavaFX & SWT 3
B Probleme bei ImageIO.read (?!) AWT, Swing, JavaFX & SWT 9
B Problem mit ImageIO.write() AWT, Swing, JavaFX & SWT 7
B ImageIO und animerte gifs? AWT, Swing, JavaFX & SWT 4
M ImageIO, Bilderordner durchblättern AWT, Swing, JavaFX & SWT 4
B ImageIO gif Dateien laden AWT, Swing, JavaFX & SWT 7
S toolkit vs. imageIO AWT, Swing, JavaFX & SWT 4
T Swing ImageIO - nicht abfangbare IOException AWT, Swing, JavaFX & SWT 5
B ImageIO.read() zweimal hintereinander aus ObjectInputStream funktioniert nicht AWT, Swing, JavaFX & SWT 4
B Problem mit imageIO und ImageIcon AWT, Swing, JavaFX & SWT 5
U ImageIO.read verursacht heap space AWT, Swing, JavaFX & SWT 15
G Problem mit BufferedImage und imageIO AWT, Swing, JavaFX & SWT 2
H ImageIO.write-Probleme, Speicherüberlauf und Absturz AWT, Swing, JavaFX & SWT 12
I BMP mit ImageIO schreiben AWT, Swing, JavaFX & SWT 1
G JFileChooser - erkennen v. existierenden Dateien ohne Endung AWT, Swing, JavaFX & SWT 1
A Savedialog - getSelectedFile() mit richtiger Endung. AWT, Swing, JavaFX & SWT 8
4 Shapes Informationen wie Breite usw. mitgeben AWT, Swing, JavaFX & SWT 5
B JButton - versteckte Daten mitgeben AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben