# inputstream() to imageicon()



## geisi (25. Jan 2006)

habe mir aus meiner datenbank einen blob geholt (darauf wird mein bild binär gespeichert)

```
ResultSet result = statement.executeQuery("SELECT bild FROM ...");
Blob bild = result.getBlob("bild");
InputStream is = bild.getBinaryStream();
//was muss ich hier machen, um vom inputstream zum imageicon zu konvertieren?????????
ImageIcon icon = new ImageIcon();
lbBild.setIcon(icon);
```


----------



## Bleiglanz (25. Jan 2006)

```
ResultSet result = statement.executeQuery("SELECT bild FROM ...");
Blob bild = result.getBlob("bild");
InputStream is = bild.getBinaryStream();
ImageIcon icon = new ImageIcon(ImageIO.read(is));
lbBild.setIcon(icon);
```
nicht getestet


----------



## meez (25. Jan 2006)

Speicher den InputStream halt auf die Platte, und lies dann das Icon ein...


EDIT: ImageIO  :bahnhof:  Seit wann gibts denn diese Klasse?


----------



## Illuvatar (25. Jan 2006)

In der API ist kein @since, aber da es ein javax package ist, vermute ich seit Java 1.2.


----------



## meez (25. Jan 2006)

Illuvatar hat gesagt.:
			
		

> In der API ist kein @since, aber da es ein javax package ist, vermute ich seit Java 1.2.



Ne, hier existiert die Klasse noch nicht...


----------



## Roar (25. Jan 2006)

in der j2se seit 1.4


----------



## geisi (25. Jan 2006)

Danke Bleiglanz! funktioniert einwandfrei!

```
ResultSet result = statement.executeQuery("SELECT bild FROM ...");
Blob bild = result.getBlob("bild");
InputStream is = bild.getBinaryStream();
ImageIcon icon = new ImageIcon(ImageIO.read(is));
lbBild.setIcon(icon);
```


----------



## meez (25. Jan 2006)

Hier noch der Weg ums "konventionell" (<1.4) zu machen:


```
ResultSet result = statement.executeQuery("SELECT bild FROM ...");
Blob bild = result.getBlob("bild");
InputStream is = bild.getBinaryStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
for (int n; (n = is.read(buffer)) != -1; out.write(buffer, 0, n));
is.close();
ImageIcon icon = new ImageIcon(out.toByteArray());
lbBild.setIcon(icon);
```

EDIT: Eigentlich wärs so, sowieso am einfachsten:

```
ResultSet result = statement.executeQuery("SELECT bild FROM ...");
Blob bild = result.getBlob("bild");
ImageIcon icon = new ImageIcon(bild.getBytes(0, bild.length()));
lbBild.setIcon(icon);
```


----------

