# BufferedImage nach InputStream



## reibi (25. Okt 2009)

Hi

Ist es irgendwie möglich aus nem BufferedImage einen InputStream zu machen?

Gruss


----------



## DamienX (25. Okt 2009)

Öhm wüsste nicht warum man das wollte...

Meinst du Ein BufferedImage durch nen Stream zu jagen?


----------



## reibi (25. Okt 2009)

... aber ich ;-)

Ja das meine ich...


----------



## Marco13 (25. Okt 2009)

Als BufferedImage? Serialization wäre vielleicht was... 
Als JPG? ImageIO + ByteArrayInput/OutputStream
Als Array von RGB-Farbwerten? Per Hand + ByteArray*putStream


----------



## reibi (25. Okt 2009)

Hi Marco13

ByteArrayInputstream wäre OK, weil das n richtiger InputStram ist im Gegensatz zu ImageInputstream.

KA wie man das macht


----------



## reibi (25. Okt 2009)

Hi zusammen :: hab selber hinbekommen:
Für die Nachwelt:


```
BufferedImage myBI = //das BufferedImage
            
            ByteArrayOutputStream myBAOS = new ByteArrayOutputStream();
            JPEGImageEncoder myEncoder = JPEGCodec.createJPEGEncoder(myBAOS);
            myEncoder.encode(myBI);
            byte[] myByteArray = myBAOS.toByteArray();
            InputStream myIS = new ByteArrayInputStream(myByteArray);
```


----------



## reibi (25. Okt 2009)

Achso:

@DamienX


> Öhm wüsste nicht warum man das wollte...



Wenn man BufferedImages(Mehrzahl) hat, die man grad erzeugt hat und aus guten Gründen nicht auf Platte zwischenspeichern will um sie in ner API zu benutzen, die kein BufferedImage versteht, sondern nur InputStream.

--> NOA  ... ag.ion.noa.graphic.GraphicInfo.GraphicInfo(InputStream arg0, ...


----------



## Marco13 (25. Okt 2009)

JPEGCodec ist Sun prorietär, und in anderen Java-Versionen nicht (und in zukünftigen Sun-Java-Versionen vielleicht nicht _mehr_) vorhanden. Man sollte das mit ImageIO machen - geht ganz analog zu dem, was du gepostet hast, mit ImageIO.write(...byteArrayOutputStream)...


----------



## reibi (25. Okt 2009)

Hi Marco

Danke für Dein Hinweis... ist eigentlich wirklich wichtig. Und wer weiss wirklich ob Oracle das in Zukunft so lässt.

Mit ImageIO.write(...byteArrayOutputStream) hab ich 2 Stunden rumprobiert und nicht hinbekommen.

Hättste/Könnste n kleines Beispiel?

;-)


----------



## Marco13 (25. Okt 2009)

Hab's jetzt nicht getestet, aber 

```
BufferedImage myBI = //das BufferedImage
            
            ByteArrayOutputStream myBAOS = new ByteArrayOutputStream();

            ImageIO.write(myBI, "jpg", myBAOS);

            byte[] myByteArray = myBAOS.toByteArray();
            InputStream myIS = new ByteArrayInputStream(myByteArray);
```
sollt's doch tun!? ???:L


----------



## reibi (25. Okt 2009)

Hi Marco

Klar läuft! ... Danke für den Tipp ;-)


----------

