ImageIO.read wählerisch

dasjoerch

Grünschnabel
Hi,

obige Funktion bereitet mir Sorgen. Ich lese Images ein (jpg,png,gif), und nach einer nicht erkennbaren Systematik fliegt für manche Bilder eine Exception beim read:

14:25:22,288 ERROR [STDERR] javax.imageio.IIOException: Unsupported Image Type
14:25:22,290 ERROR [STDERR] at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown Source)
14:25:22,291 ERROR [STDERR] at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(Unknown Source)
14:25:22,292 ERROR [STDERR] at javax.imageio.ImageIO.read(Unknown Source)
14:25:22,293 ERROR [STDERR] at javax.imageio.ImageIO.read(Unknown Source)


Bilder sind unterschiedlichster Herkunft (Photshop o.ä.) - manche gehen durch, mache nicht. Manche erst, wenn ich sie erneut mit einem anderen Bildbearbeiter neu abspeichere... (nur jpegs). Aber andere Tools/Betrachter öffnen alles und zeigen Bilder an.
Ist diese Funktion anfällig für zusätziche Daten, spezielle Metatags o.ä.?

Code:
ByteArrayInputStream imageDataStream = new ByteArrayInputStream(imageDataGot);
		try
		{
			image = ImageIO.read(imageDataStream);
		} catch (IOException e)
		{
			this.logger.log(Level.WARNING, e.getMessage());
		}

Dabei ist imageDataGot ein byte[].

Ich verzweifle noch. Vielleicht weiß jeman Rat. Oder kann andere Image-libraries empfehlen?

Dank, dasjoerch
 
Die, die nicht gehen, sind vermutlich falsch (oder nicht für Java lesbar) abgespeichert. Wie du schon sagtest: Nochmal richtig abspeichern, dann gehts.
 
Das Problem ist, dass das gerade im live-test läuft, und es von "jedermann" bedient werden soll - da kann ich nicht immer neu abspeichern.
Es kann doch nicht sein, dass original in Photoshop abgespeicherte JPGS "nicht lesbar" sind. Jeder andere Betrachter stolpert auch nicht.
Man kann schlecht vom Nutzer erwarten, dass er erst das richtige Tool finden muss, um Bilder zu speichern, die er dann hochladen darf. ;)
Und da fallen einfach zu viele durch, die nicht gehen.


Gruß, josh
 
Zuletzt bearbeitet:
JPGS? Was ist dass denn wieder für ein Dateiformat? Oder meinst du den Plural => JPGs? Also ich für meinen Teil hatte mit ImageIO nur einmal ein identisches Problem wie du, und da war das Bild einfach falsch abgespeichert (manche Programme konnten es darstellen, anderen nicht).

Wenn dir ImageIO nicht reicht, kannst du dir auch mal JAI => http://java.sun.com/products/java-media/jai/iio.html ansehen.

[edit]Die Idee von CosmoKey ist auch nicht schlecht ;)
 
Zurück