Hallo Leute!
Ich habe ein kleines Problemchen beim Rotieren von Bildern. Ich drehe Bilder mithilfe der Klasse AffineTransform. Ich will das Bild nur rechts-, links-, und um 180° drehen. Auf den Kopf stellen (also 180°) funktioniert ohne Probleme, jedoch wenn ich das Bild links- oder rechtsdrehe, scheidet er immer ein Stück vom Bild ab. Ich habe das Buch "Java 2D Api Graphics" von Sun besorgt in dem es recht gut erklärt ist. Ich kann jedoch den Fehler nicht finden. Es wird auch kein temporäres Bild angelegt, sondern das neue Bild direkt in das Alte "gerendert" (mit Hilfe der Filter-Methode).
Hier der Code:
"img" ist ein BufferedImage-Objekt
In dem Buch steht geschrieben, dass die "filter-Methode" die Groesse des neuen Bildes automatisch bestimmt...
Ich habe es auch schon versucht ein neues Bild zu erstellen, dh
aber das will auch nicht so recht funktionieren...
Jemand eine Ahnung woran das liegen könnte?
Ich habe ein kleines Problemchen beim Rotieren von Bildern. Ich drehe Bilder mithilfe der Klasse AffineTransform. Ich will das Bild nur rechts-, links-, und um 180° drehen. Auf den Kopf stellen (also 180°) funktioniert ohne Probleme, jedoch wenn ich das Bild links- oder rechtsdrehe, scheidet er immer ein Stück vom Bild ab. Ich habe das Buch "Java 2D Api Graphics" von Sun besorgt in dem es recht gut erklärt ist. Ich kann jedoch den Fehler nicht finden. Es wird auch kein temporäres Bild angelegt, sondern das neue Bild direkt in das Alte "gerendert" (mit Hilfe der Filter-Methode).
Hier der Code:
"img" ist ein BufferedImage-Objekt
Code:
AffineTransform rotation = new AffineTransform();
AffineTransformOp rotator;
rotation.rotate(Math.toRadians(ROTATERIGHT), img.getWidth() / 2, img.getHeight() / 2);
rotator = new AffineTransformOp(rotation, AffineTransformOp.TYPE_BILINEAR);
img = rotator.filter(img, null);
In dem Buch steht geschrieben, dass die "filter-Methode" die Groesse des neuen Bildes automatisch bestimmt...
Ich habe es auch schon versucht ein neues Bild zu erstellen, dh
Code:
AffineTransform rotation = new AffineTransform();
AffineTransformOp rotator;
BufferedImage tmp = new BufferedImage(img.getHeight(), img,getWidth(), img,getType()); //width und height sind extra vertauscht
rotation.rotate(Math.toRadians(ROTATERIGHT), img.getWidth() / 2, img.getHeight() / 2);
rotator = new AffineTransformOp(rotation, AffineTransformOp.TYPE_BILINEAR);
img = rotator.filter(img, tmp);
img = tmp;
aber das will auch nicht so recht funktionieren...
Jemand eine Ahnung woran das liegen könnte?