# JavaFX: Bild in Image einlesen



## levtolstoi (14. Jan 2013)

Hallo,

nach Einlesen eines InputStream in Image-Objekt bekomme ich ein Fehler.


```
Holder<DataHandler> handler = new Holder<DataHandler>();				
handler.value = new DataHandler(new ByteArrayDataSource(irbean.getOptIRImage().value, "image/png"))
InputStream in = null;
 try {
	in = handler.value.getInputStream();
      } catch (IOException e) 
     {					
	e.printStackTrace();
      }		         
Image img = new Image(in);// hier ist der Fehler
```

Danke

Gruß


----------



## IMartin (14. Jan 2013)

Ohne zu wissen, was bei 
	
	
	
	





```
new ByteArrayDataSource(irbean.getOptIRImage().value, "image/png")
```
 alles genau passiert:

Wenn ich den Teil durch ein URL-Objekt ersetze, funktioniert es problemlos.
Auch die Wege aus dem Ensemble-Beispiel (ImageCreationSample) funktionieren prima.


----------



## levtolstoi (14. Jan 2013)

ich lese insgesamt 4 Bilder ein: 3 werden tadellos eingelesen, 1 Bild nicht.
Über URL einlesen funktioniert auch nicht, aber aus InputStream kann ich das Bild im Filesystem speichern und öffnen.
Vieleicht hilft mir wenn ich den Fehlercode auslese aus dem Image-Objekt. Da habe ich mit ReadOnlyBooleanProperty() und hashcode einen negativen 9-Stelligen wert bekommen, das sieht irgendwie nach Unsinn aus.

Gruß


----------



## L-ectron-X (14. Jan 2013)

1. Code bitte in 
	
	
	
	





```
-Tags posten. (Roten Text über dem Editor bitte nicht ignorieren!)
2. Wenn du sagst: "Es wird ein Fehler ausgegeben." etc. ist bitte immer die komplette Ausgabe der Fehlermeldung mit zu posten!
3. [JAPI]Image [/JAPI]ist [code]abstract
```
 und kann deshalb nicht instanziiert werden. Und schon gar nicht hat Image einen Konstruktor mit Parameter. Dazu einfach mal die API-Doc lesen.
Um das Problem zu lösen könnte folgender Beitrag helfen: Grafikdateien laden und anzeigen ? Byte-Welt Wiki


----------



## IMartin (14. Jan 2013)

L-ectron-X hat gesagt.:


> 3. [JAPI]Image [/JAPI]ist
> 
> 
> 
> ...


Ja, 
	
	
	
	





```
java.awt.Image
```
 ist abstrakt, 
	
	
	
	





```
[URL="http://docs.oracle.com/javafx/2/api/javafx/scene/image/Image.html"]javafx.scene.image.Image[/URL]
```
 aber nicht und die Klasse hat tatsächlich einen solchen Konstruktor.


----------



## L-ectron-X (14. Jan 2013)

Danke für die Aufklärung. Bin wohl zu sehr ein Swing-Jünger...


----------



## levtolstoi (15. Jan 2013)

der Error wird einfach als boolean-Wert zurückgegeben, d.h. true.

Gruß


----------



## Bleiglanz (15. Jan 2013)

Frage: 
	
	
	
	





```
e.printStackTrace();
```
 hat noch nie einen boolean zurückgegeben, du musst doch wohl wissen

1. Wo der Fehler auftritt (in welcher Zeile)?

2. Welche Exception überhaupt geflogen ist?

sonst kann hier niemand helfen...


----------



## levtolstoi (15. Jan 2013)

Die Zeile ist angegeben, wo der Fehler ist.
Die Exception bezieht sich auf was anderes
Und hier wird keine Exception geworfen.
mit img.isError() wird dann geprüft, ob der Fehler da ist und hier wird boolean-Wert ausgegeben (der neunstellige Wert, was ich vorher geschrieben habe ist hashcode, daher auch was anderes)

Gruß


----------



## Bleiglanz (15. Jan 2013)

Das Bild schon mal mit einem Bildverarbeitungsprogramm aufgemacht? Binärer Fehler in der Datei?


----------



## levtolstoi (15. Jan 2013)

Das bild kann ich mit jedem Bildverarbeitungsprogramm öffnen, allerdings nicht in JavaFX Scene Builder.
Wenn ich Dateien vergleiche, dann die Bilder die der JavaFx Builder anzeigt, im Hex Mode eine Datei-Extension ganz am Anfang steht, z.B. PNG. Die er nicht anzeigen kann, steht keine Datei-Extenstion.
D.h. ich vermute, ich muß die Umwandlung von byte[] in InputStream so schaffen, daß er mir die Extension in den InputStream reinschreibt.

Gruß


----------



## levtolstoi (15. Jan 2013)

Vielen Dank für die Bemühungen!

Fehler von mir. Ein Unachtsamkeitfehler, habe das Format im vorhergehendem Code unterschieldich angegeben.

Danke

Gruß


----------

