Drehen 90 Grad nach rechts Bild in java
Kann ich nicht drehen Bild um 90 Grad nach rechts .
Ich muss in der Lage sein, um Bilder zu drehen, einzeln, in java. Die einzige Sache, die. Leider brauche ich zum zeichnen des Bildes an einem bestimmten Punkt, und es gibt keine Methode mit einem argument, das 1.dreht das Bild separat und 2. erlaubt mir zu den x-und y. jede Hilfe ist willkommen
public class Tumbler extends GraphicsProgram{
public void run() {
setSize(1000,1000);
GImage original = new GImage("sunset.jpg");
add(original, 10, 10);
int[][] pixels = original.getPixelArray();
int height = pixels.length;
int width = pixels[0].length;
//Your code starts here
int newheight = width;
int newwidth = height;
int[][] newpixels = new int[newheight][newwidth];
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
newpixels[j][height-1-i] = pixels[i][j];
}
}
GImage image = new GImage(newpixels);
add(image, width+20, 10);
//Your code ends here
}
[Ich glaube, das ist, was Sie wollen][1] [1]: stackoverflow.com/questions/4156518/rotate-an-image-in-java
InformationsquelleAutor Ertuğrul Çetin | 2014-01-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diskutiert, wie hier, die Sie verwenden können,
AffineTransformOp
um ein Bild zu drehen, indemMath.PI /2
; dies entspricht der Drehung des Bildes im Uhrzeigersinn um 90°, wie gezeigt hier. Siehe auch der Umgang mit 90-Grad-Drehungen.InformationsquelleAutor trashgod
Sollten wir auf jeden Fall nutzen Graphics2D wenn wir wollen anständige Leistung (~10x schneller im Vergleich zu kopieren von Pixeln direkt):
90-Grad-Winkel ist Math.PI / 2", " 180 Grad Math.PI und so weiter 😉
Wie pflegt man die dpi oder die Auflösung des Bildes?
dpi/Auflösung bleibt unverändert!
aber ich bin vor dpi - & bit-Tiefe Frage in diesem.
InformationsquelleAutor Alexander
Hier ist der code, den ich verwendet, um zu drehen ein BufferedImage um 90 Grad im Uhrzeigersinn. Da drehen um 90 Grad ist ein besonderer Fall, ich glaube nicht, dass eine Lösung, die eine generische für jeden Winkel hätte eine optimale Leistung. Ebenso für Lösungen, die führen Sie eine Art der interpolation (bilinear, Bikubisch, etc.) Ich BufferedImage verwendet.getRaster (), um den Zugriff auf die raw-bytes, um die Leistung zu verbessern, aber, je nach Struktur/layout des Bildes, dies ist wahrscheinlich nicht in allen Fällen funktionieren. YMMV.
InformationsquelleAutor Ken
Eine vereinfachte version von Ken ' s Antwort:
Vielen Dank für den code, aber eigentlich überträgt die Bild! Die richtige version wäre:
dest.setRGB(y, w - x - 1, src.getRGB(x, y));
danke für das feedback, ich aktualisiert.
InformationsquelleAutor Charlie
Drehen Bild um 90, 180 oder 270-Grad-Winkel
InformationsquelleAutor Developer
hier ist der code für die Verwendung von 2D-arrays:
InformationsquelleAutor A Pali