Ich versuchte mich mal etwas in Java und habe nun ein Problem; ich möchte ein Bild drehen (Image-Klasse), dazu muss ich es erst in ein BufferedImage kopieren (anscheinend). Habe ienen Ausschnitt gefunden zum drehen und nun passiert folgendes:
Das Bild wird gedreht aber das Image/BufferedImage-Objekt behält seie Höhe/Breite, so dass einen Teil des Bildes abgeschnitten wird und schwarze Ränder entstehen. Ich habe beim Anlegen des BufferedImage-Objekts, in welches die Funktion Java Code:
private static BufferedImage rotateImage(BufferedImage src, double degrees)
das gedrehte Bild zurückgibt aber absichtlich die Höhe/Breite vertauscht! Versuchte es natürlich auch umgekehrt aber immer mit dem Ergebnis.
Hier etwas mehr Code:
Das Bild wird gedreht aber das Image/BufferedImage-Objekt behält seie Höhe/Breite, so dass einen Teil des Bildes abgeschnitten wird und schwarze Ränder entstehen. Ich habe beim Anlegen des BufferedImage-Objekts, in welches die Funktion Java Code:
private static BufferedImage rotateImage(BufferedImage src, double degrees)
Code:
private static BufferedImage rotateImage(BufferedImage src, double degrees)
Hier etwas mehr Code:
Code:
if(Label.equals("drehen")){ turnImage(); m_bildanzeige.repaint(); } .... public void turnImage() { BufferedImage outImg = new BufferedImage(m_aktBild.getWidth(m_bildanzeige), m_aktBild.getHeight(m_bildanzeige), BufferedImage.TYPE_INT_RGB); Graphics g = outImg.getGraphics(); g.drawImage(m_aktBild, 0, 0, null); g.dispose(); BufferedImage turnedImg = new BufferedImage(m_aktBild.getHeight(m_bildanzeige), m_aktBild.getWidth(m_bildanzeige), BufferedImage.TYPE_INT_RGB); turnedImg=rotateImage(outImg, 90); /*Graphics g2=m_aktBild.getGraphics(); g2.drawImage(turnedImg, 0, 0, null); g2.dispose();*/ m_aktBild=turnedImg; m_tempAnzeigeBild=m_aktBild; } private static BufferedImage rotateImage(BufferedImage src, double degrees) { AffineTransform affineTransform = AffineTransform.getRotateInstance( Math.toRadians(degrees), src.getWidth() / 2, src.getHeight() / 2); BufferedImage rotatedImage = new BufferedImage(src.getWidth(), src .getHeight(), src.getType()); Graphics2D g = (Graphics2D) rotatedImage.getGraphics(); g.setTransform(affineTransform); g.drawImage(src, 0, 0, null); return rotatedImage; }
Comment