AffineTransform обрезает изображение

У меня есть изображение, и я должен повернуть его на 45, 90, 135, 180 градусов. Что я делаю

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();
}

Проблема в том, что изображение меняет свою позицию и выходит за пределы целевого изображения:

Проблема http://img32.imageshack.us/img32/3328/resultcs.pn

Я нашел это в Google и нашел решение в этом вопросе:AffineTransform обрезает изображение, что я не так делаю? Но я совсем не понимаю, и это работает только для квадрантов. Я попытался умножить вдвое ширину и высоту места назначения, но это не удалось:

Еще один сбой http://img401.imageshack.us/img401/2417/result2a.pn

Как это исправить? На целевом изображении не должно быть лишних (кроме необходимых для диагонального вращения) пробелов или усеченных областей. Проблемы с углом (0 == 180 или по часовой стрелке) не важны.

Спасибо за любую помощь.

Ответы на вопрос(2)

Ваш ответ на вопрос