AffineTransform schneidet Bild ab

Ich habe ein Bild und muss es um 45, 90, 135, 180 Grad drehen. Was mache ich

try {
    BufferedImage src = ImageIO.read(new File("src.png"));
    double ang = Math.toRadians(90);

    AffineTransform t = new AffineTransform();
    t.setToRotation(ang, src.getWidth() / 2, src.getHeight() / 2);

    AffineTransformOp op = new AffineTransformOp(t, null);
    BufferedImage dst = new BufferedImage(src.getWidth(), src.getHeight(), src.getType());
    op.filter(src, dst);

    ImageIO.write(dst, "png", new File("output.png"));
} catch(Exception ex) { ex.printStackTrace();
}

Das Problem ist, dass das Bild seine Position ändert und außerhalb der Grenzen des Zielbilds liegt:

Das Problem http://img32.imageshack.us/img32/3328/resultcs.pn

Ich habe das gegoogelt und die Lösung in dieser Frage gefunden:AffineTransform schneidet Bild ab, was mache ich falsch? Aber ich verstehe das ganz und gar nicht und es funktioniert nur für quadranten. Ich habe versucht, die Breite und Höhe des Ziels zweimal zu multiplizieren, aber es ist fehlgeschlagen:

Ein anderer Fehler http://img401.imageshack.us/img401/2417/result2a.pn

Wie kann ich das beheben? Das Zielbild sollte keine zusätzlichen Leerzeichen oder abgeschnittenen Bereiche enthalten (außer für diagonale Rotation). Winkelprobleme (0 == 180 oder im Uhrzeigersinn) sind nicht wichtig.

ielen Dank für jede Hilf

Antworten auf die Frage(2)

Ihre Antwort auf die Frage