# BufferedImage to Bytes



## Pfeiffî (7. Nov 2007)

Hallo, etwas für Cracks!
wie schaffe ich es ein BufferedImage in die Bytes zu zerlegen, um es über eine ZipOutputstream im Servlet an den Client zu senden. 
Bisher mache ich das so, ich schreibe es als File auf Platte des Servers und hole es dann dort wieder ab, aber das kann es ja auch nicht sein, unter umständen gibt es dann dort Dateileichen.

Bisher so:


```
try {
// Schreiben auf Platte des Servers   
ImageIO.write(iobj.getBufImage(), "png", new File(iobj
                     .getBufImageName()));
            

               iobj.getBufImage().toString().getBytes();
            } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }

            // -----------ZIP-PACK-SCHLEIFE--IMAGE-DATEI--------
//holen von Platte des Servers - wie geht das anders ?????
            fis = new FileInputStream(iobj.getBufImageName());
            // das File wieder löschen
            File xx = new File(iobj.getBufImageName());
            xx.delete();

            buf = new byte[1024];

            entry = new ZipEntry(iobj.getBufImageName());
            out.putNextEntry(entry);

            len = 0;
            while ((len = fis.read(buf)) > 0) {
               out.write(buf, 0, len);
            }
            fis.close();
```


----------



## The_S (7. Nov 2007)

Ein BufferedImage hat in diesem Sinne keine "bytes", da es einfach ein Bild OHNE Format ist. Jenachdem in welchem Format das BufferedImage abgespeichert wird, sehen die bytes ja unterschiedlich aus. Du könntest aber ImageIO#write einen eigenen FileOutputStream übergeben, welcher dann die bytes aufnimmt.


----------



## Marco13 (7. Nov 2007)

Wenn du die daten in einen FileOutputStream schreiben kannst, solltest du einfach "File" durch "Zip" ersetzen können . Stream ist Stream :roll:


----------

