Java: imágenes giratorias

Necesito poder rotar las imágenes individualmente (en java). Lo único que he encontrado hasta ahora es g2d.drawImage (image, affinetransform, ImageObserver). Desafortunadamente, necesito dibujar la imagen en un punto específico, y no hay ningún método con un argumento que 1.vuelva a girar la imagen por separado y 2. me permita configurar x e y. cualquier ayuda es apreciada

Así es como puedes hacerlo. Este código supone la existencia de una imagen almacenada en el búfer llamada “imagen” (como dice su comentario)

// The required drawing location int drawLocationX = 300; int drawLocationY = 300; // Rotation information double rotationRequired = Math.toRadians (45); double locationX = image.getWidth() / 2; double locationY = image.getHeight() / 2; AffineTransform tx = AffineTransform.getRotateInstance(rotationRequired, locationX, locationY); AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); // Drawing the rotated image at the required drawing locations g2d.drawImage(op.filter(image, null), drawLocationX, drawLocationY, null); 

AffineTransform instancias de AffineTransform pueden concatenarse (agregarse juntas). Por lo tanto, puede tener una transformación que combine ‘cambiar a origen’, ‘rotar’ y ‘volver a la posición deseada’.

Una forma sencilla de hacerlo sin el uso de una statement de dibujo tan complicado:

  //Make a backup so that we can reset our graphics object after using it. AffineTransform backup = g2d.getTransform(); //rx is the x coordinate for rotation, ry is the y coordinate for rotation, and angle //is the angle to rotate the image. If you want to rotate around the center of an image, //use the image's center x and y coordinates for rx and ry. AffineTransform a = AffineTransform.getRotateInstance(angle, rx, ry); //Set our Graphics2D object to the transform g2d.setTransform(a); //Draw our image like normal g2d.drawImage(image, x, y, null); //Reset our graphics object so we can draw with it again. g2d.setTransform(backup); 
 public static BufferedImage rotateCw( BufferedImage img ) { int width = img.getWidth(); int height = img.getHeight(); BufferedImage newImage = new BufferedImage( height, width, img.getType() ); for( int i=0 ; i < width ; i++ ) for( int j=0 ; j < height ; j++ ) newImage.setRGB( height-1-j, i, img.getRGB(i,j) ); return newImage; } 

de https://coderanch.com/t/485958/java/Rotating-buffered-image