Hallo,
ich versuche ein Bild zu drehen - schaffe es aber nicht korrekt. Das neue Bild ist immer etwas verschoben (bzw. abgeschnitten - da verschoben)
Mein Code:
Danke für eure Hilfe!
ich versuche ein Bild zu drehen - schaffe es aber nicht korrekt. Das neue Bild ist immer etwas verschoben (bzw. abgeschnitten - da verschoben)
Mein Code:
Java:
public class Rotate extends JPanel {
BufferedImage img;
Rotate() {
try {
img = ImageIO.read(new File("c:\\test1.jpg"));
} catch (Exception e) {
System.err.println("Fehler beim lesen");
}
}
public void paintComponent(Graphics g) {
//Original zeichnen
g.drawImage(img, (this.getWidth() - img.getWidth()) / 2, (this.getHeight() - img.getHeight()) / 2, this);
BufferedImage ret = rot();
g.drawImage(ret, (this.getWidth() - ret.getWidth()) / 2, (this.getHeight() - ret.getHeight()) / 2, this);
}
public BufferedImage rot() {
double degree = Math.toRadians(45);
//New Dimensionen weil gedrehtes Bild mehr Platz benötigt
int newW = (int) (img.getWidth() * Math.sin(degree) + img.getHeight() * Math.cos(degree));
int newH = (int) (img.getHeight() * Math.cos(degree) + img.getWidth() * Math.sin(degree));
BufferedImage ret = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);
//AffineTransform drehen
AffineTransform tx = new AffineTransform();
tx.rotate(degree, (double) (img.getWidth() / 2), (double) (img.getHeight() / 2));
//AffineTransform Operation ausführen
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
op.filter(img, ret);
return ret;
}
}
Danke für eure Hilfe!