Попробуйте использовать AffineTransform
получить повернутый экземпляр
static void rotate(BufferedImage from, BufferedImage to, double rotate)
{
// rotate around the center
AffineTransform trans
= AffineTransform.getRotateInstance(rotate,
from.getWidth()/2, from.getHeight()/2);
AffineTransformOp op = new AffineTransformOp(trans,
AffineTransformOp.TYPE_BILINEAR);
op.filter(from, to);
}
или drawing
напрямую
static void rotate(Graphics2d g2d, BufferedImage img, double rotate)
{
// rotate around the center
AffineTransform trans
= AffineTransform.getRotateInstance(rotate,
from.getWidth()/2, from.getHeight()/2);
g2d.drawImage(img, trans, null);
}