title: Rotate an image in java
body: <p>I am looking to rotate an image. I have a <code>JInternalFrame</code> which contains a <code>JLabel</code>. The label contains the image. After the image has been rotated, I need to resize the internal frame. The code I have currently rotates the image, but there is black around the edges of the image and it is off centered. Any suggestions on how to fix this?</p>
  
  <pre><code>public void rotateIcon(int angle)
  {
          int w = theLabel.getIcon().getIconWidth();
          int h = theLabel.getIcon().getIconHeight();
          int type = BufferedImage.TYPE_INT_RGB;  // other options, see api
  
          BufferedImage DaImage = new BufferedImage(h, w, type);
          Graphics2D g2 = DaImage.createGraphics();
  
          double x = (h - w)/2.0;
          double y = (w - h)/2.0;
          AffineTransform at = AffineTransform.getTranslateInstance(x, y);
  
          at.rotate(Math.toRadians(angle), w/2.0, h/2.0);
          g2.drawImage(new ImageIcon(getData()).getImage(), at, theLabel);
          g2.dispose();
  
          theLabel.setIcon(new ImageIcon(DaImage));
          this.setSize(DaImage.getWidth(),DaImage.getHeight()); //resize the frame
  }
  </code></pre>