BufferedImage rotieren

darkeye2

Bekanntes Mitglied
Hallo, ich habe zu diesem Thema unzählige bsp´s im Netz gefunden (auch hier im Forum) leider hat keins so Funktioniert, wie es sollte, alle schienen vom Code her logisch zu sein, aber bei den einen sahen die bilder wirklich schlimm verzogen aus, bei einem anderen verschwanden diese ganz, usw.

Nun möchte ich wissen, ob es in Java bereits eine fertige möglichkeit gibt, bilder zu drehen, bzw. Hilfsmittel, mit dennen man es schafft, und wenn ja, wie? (von AffineTransform hab ich schon gehört und mehr als genug probiert, aber seblst die bsp codes gingen nicht gescheit). Ich möchte ein BufferedImage um eine beliebige gradzahl drehen können.

Freue mich auch eure Antworten
 
Also ohne Zusätze sehe ich auch keine Möglichkeit ausser Graphics2D mit AffineTransform. In LWJGL (OpenXL-Bindings für Java) aber gibt es das sog. RenderToTexture-Verfahren. Damit kann man ganze Szenen halt in den Texturspeicher der GraKa rendern und von dort aus in ein BufferedImage speichern. Die Szene kann natürlich auch ein einziges Rechteck sein, welches mit dem Ursprünglichen BufferedImage texturiert und gedreht wurde. Ich kenn' das aber nur per Präsentation durch einen Bekannten und hab's selber noch nicht gemacht. Aber immerhin - mit hoher Detailstufe (AntiAliasing) bekommt man zumindest bessere Ergebnisse als mit dem Java-Standard.
 
Wenn du weisst um wieviele Grad du das drehen willst ist es ziemlich banale Trigonometrie.

h = sin(alpha) * breite + cos(alpha) * hoehe
b = cos(alpha) * breite + sin(alpha) * hoehe

(Ich hoffe ich habe nichts verdreht 🙂 )
 
Zuletzt bearbeitet:
scheint zu stimmen, danke
(komisch, dass ich da net selbst drauf gekommen bin, oft sind es so simple dinge, auf die man einfach nicht kommt)
DANKE
 
Code:
rotate(...)
auf Graphics2d aufrufen (s. Graphics2D (Java 2 Platform SE v1.4.2)). Einfacher gehts kaum.

z.B.
Java:
public void paintComponent(Graphics g) {
  ....
  Graphics2D g2d = (Graphics2D) g;
  g2d.rotate(Math.toRadians(90)); // 90 Grad Drehung
  ...
}
 

Neue Themen


Zurück
Oben