Grazie,
adesso non mi fa vedere più gli spazi neri ma ho ancora il problema con gli angoli dell'immagine. Forse è una cosa normale e sono io che non capisco:
La mia funzione adesso è:
codice:
public BufferedImage myRotate(Image i, double degree) {
int w = i.getWidth(null);
int h = i.getHeight(null);
double angle = Math.toRadians(degree);
double sin = Math.abs(Math.sin(angle));
double cos = Math.abs(Math.cos(angle));
int neww = (int) Math.floor(w * cos + h * sin);
int newh = (int) Math.floor(h * cos + w * sin);
AffineTransform at = new AffineTransform();
at.scale((w + 0.0) / (neww + 0.0), (h + 0.0) / (newh + 0.0));
at.translate((neww - w) / 2, (newh - h) / 2);
at.rotate(angle, w/ 2, h/ 2);
BufferedImage b = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = b.createGraphics();
g.drawImage(i, at, null);
g.dispose();
return b;
Facendo così però l'immagine è ancora un parallelogramma. Se rimuovo l'operazione di scale o translate ottengo angoli a 90° ma l'immagine non è centrata.
Ecco due esempi: (lo sfondo nero è l'immagine originale,ce l'ho messo apposta )
Immagine con angoli dritti:

Immagine a parallelogramma:

Qualcuno ha qualche idea?
Grazie