title: How to improve image rotation quality in Graphics2D?
body: <p>Currently I am using this code (which I found <a href="http://flyingdogz.wordpress.com/2008/02/11/image-rotate-in-java-2-easier-to-use/" rel="nofollow noreferrer">here</a>) to rotate images in Java. The code works well, but I am not satisfied with the quality of the rotated image. </p>
  
  <p>How can I improve it? Do it need a separate library that?    </p>
  
  <pre><code>public static BufferedImage rotate(BufferedImage image, float angle) {
      float radianAngle = (float) Math.toRadians(angle) ; 
  
      float sin = (float) Math.abs(Math.sin(radianAngle));
      float cos = (float) Math.abs(Math.cos(radianAngle));
  
      int w = image.getWidth() ;
      int h = image.getHeight();
  
      int neww = (int) Math.round(w * cos + h * sin);
      int newh = (int) Math.round(h * cos + w * sin);
  
      GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
      GraphicsDevice gd = ge.getDefaultScreenDevice();
      GraphicsConfiguration gc = gd.getDefaultConfiguration();
  
      BufferedImage result = gc.createCompatibleImage(neww, newh, Transparency.TRANSLUCENT);
      Graphics2D g = result.createGraphics();
  
      g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  
      g.translate((neww-w)/2, (newh-h)/2);
      g.rotate(radianAngle, w/2, h/2);
  
      g.drawRenderedImage(image, null);
      g.dispose();
  
      return result;
  }
  </code></pre>