Ho alcuni problemi con le immagini in rotazione in Java utilizzando la classe AffineTransform.Problemi di rotazione del bufferImmagine
ho il seguente metodo per creare un (90 gradi) copia ruotata di un'immagine:
private BufferedImage createRotatedCopy(BufferedImage img, Rotation rotation) {
int w = img.getWidth();
int h = img.getHeight();
BufferedImage rot = new BufferedImage(h, w, BufferedImage.TYPE_INT_RGB);
double theta;
switch (rotation) {
case CLOCKWISE:
theta = Math.PI/2;
break;
case COUNTERCLOCKWISE:
theta = -Math.PI/2;
break;
default:
throw new AssertionError();
}
AffineTransform xform = AffineTransform.getRotateInstance(theta, w/2, h/2);
Graphics2D g = (Graphics2D) rot.createGraphics();
g.drawImage(img, xform, null);
g.dispose();
return rot;
}
rotazione è una semplice enum con valori NESSUNO, senso orario e antiorario.
I sintomi di miei problemi sono visualizzate qui:
http://perp.se/so/rotate_problems.html
Così, la rotazione funziona bene, ma le immagini risultanti non sono ancorate alle coordinate corrette (o come si dovrebbe metterlo). E poiché non so davvero cosa diavolo sto facendo in primo luogo (la mia algebra lineare è debole), non so come risolverlo da solo.
Ho provato con qualche giochetto casuale con l'istanza AffineTransform, ma non mi ha aiutato (ovviamente). Ho provato googling (e cercando SO), ma tutti gli esempi che ho visto fondamentalmente usano lo stesso approccio che faccio ... che non funziona per me.
Complimenti per un consiglio.
domanda equivalente per NET: http://stackoverflow.com/questions/2225363/c-rotate-bitmap-90-degrees – finnw