Jak v paměti vytvořit obrázek a pak ho uložit na disk

Když jsem naposledy řešil jak z programu v Javě udělat výstup do grafického formátu PNG strávil jsem relativně dlouhý čas hledáním nějakých informací, o které se teď chci podělit:

BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //vytvoreni obrazku s danou sirkou a vyskou
Graphics g;
g=bimage.getGraphics();
Graphics2D g2d = bimage.createGraphics();
g2d.setColor(Color.RED); //nastaveni barvy kresleni
g2d.drawRect(x,y,vyska,sirka); //kresleni obdelniku

objekt g2d obsahuje spoustu metod pro kreslení nebo přizpůsobování obrázku, jako je kreslení geometrických tvarů,barev…

nakonec obrázek uložíme na disk:

ImageIO.write(bimage, „png“, new File(„vystup.png“));

Možná by bylo dobré ještě uvést seznam importů co jsou třeba k chodu programu

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;