Ciao a tutti ho due problemi con la rotazione di una immagine:

data una BufferedImage im:

int y=im.getHeight();
g2.rotate(Math.toRadians(90));
g2.drawImage(im, 0, -y*2, this);

L'immagine viene ruotata correttamente però non riesco a capire come, dato questo codice, potrei salvare su file l'immagine ruotata tramite il metodo ImageIO.write perchè, l'immagine viene si ruotata ma solo sullo schermo e non viene salvata su nessun oggetto BufferedImage..come potrei fare??

Un'altra opzione che ho trovato è questa:

AffineTransform at = new AffineTransform();
at.rotate(Math.toRadians(90),x/2,y/2);

BufferedImageOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
BufferedImage bi=op.filter(im,null);
g2.drawImage(bi, 0, 0,null);
try {
ImageIO.write(bi, "jpg", new File("r.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

In questo caso riesco a salvarla su file, ma quando la stampa a schermo sul lato sinistro lascia uno spazietto bianco tra il bordo del frame e l'imm, mentre taglia un piccolo pezzo della parte nord dell'immagine(cosa che nel primo esempio non succedeva)..come mai?