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?