Java examples for 2D Graphics:BufferedImage Rotate
rotate Image
//package com.java2s; import java.awt.*; import java.awt.geom.*; import java.awt.image.*; public class Main { private static final Component OBSERVER = new Component() { private static final long serialVersionUID = 1L; };/* w ww . j a v a 2s . co m*/ public static BufferedImage rotateImage(BufferedImage img, double degrees) { // a imagem rotacionada pode ter uma ?rea quadrada maior que a original // por isso criamos uma nova imagem com base no tamanho da hipotenusa // do triangulo formado entre o centro da imagem e um dos cantos Rectangle bounds = new Rectangle(0, 0, img.getWidth(), img.getHeight()); int a = bounds.width - (int) (bounds.getCenterX() + 0.5); int b = bounds.height - (int) (bounds.getCenterY() + 0.5); int hypotenusa = (int) (Math.sqrt(a * a + b * b) + 0.5); // o tamanho da nova imagem vai ser o dobro da hipotenusa // assim n?o haver? corte na imagem original ap?s a rota??o final int side = hypotenusa * 2; BufferedImage squareImg = new BufferedImage(side, side, img.getType()); // criar objeto de transforma??o da rota??o AffineTransform transform = new AffineTransform(); // rotacionar transform.rotate(Math.toRadians(degrees), hypotenusa, hypotenusa); // centralizar transform.translate((side - bounds.width) / 2.0, (side - bounds.height) / 2.0); // desenhar a imagem rotacionada Graphics2D g = squareImg.createGraphics(); g.drawImage(img, transform, OBSERVER); g.dispose(); // devolver a nova imagem return squareImg; } }