# ImageIO.write beschleunigen



## flashdog (2. Mrz 2010)

Hallo,
momentan schreibe ich BufferedImage in PNG wie folgt:
	
	
	
	





```
ImageIO.write(buf,"PNG",new File("checkboard.png"));
```

Könnte man "new File()" durch eine Stream/Buffer Kombination ersetzen um mehr Geschwindigkeit zu bekommen?

Viele Grüße


----------



## Steev (2. Mrz 2010)

Mir würde jetzt nur auf die schnelle ImageIO.setUseCache(true) einfallen, wo du einen Chache für das Schreiben verwenden kannst.

Das einzige was du an deiner Methode noch ändern kannst ist, dass der Output nicht direkt in ein File sondern in einen OutputStream geleitet wird.
static boolean write(RenderedImage im, String formatName, OutputStream output) 

Gruß
Steev


----------



## Spacerat (2. Mrz 2010)

Die API sagt eindeutig "JA" [c]ImageIO.write(RenderedImage img, String format, OutputStream out)[/c].
Aber ob das Schreiben unbedingt schneller geht, wenn der Stream wieder auf eine Datei zeigt ist fraglich. Wenn der weitere Programmablauf durch den Aufruf der Speicherroutine nicht aufgehalten waufgehalten werden soll, kann man diese ja in einem separaten Thread aufrufen. Wenn der Thread ordnungsgemäss beendet bzw. abgebrochen wurde, schreibt er eine entsprechende Statusmeldung in einen Pool (Log), wo mann sie ggf. auslesen und entsprechend darauf reagieren kann.
@Edit: Iwie Steev zu schnell für mein Alter lol...


----------

