Servlet girando uma imagem

1 resposta
nicoweda

Estou quebrando a cabeça para entender oque está acontecendo.
Preciso fazer um metodo que deve girar as minhas imagens.
Este método funciona direitinho, porém, apenas para imagens quadradas!
Se a imagem for um retangulo eu tenho problemas. A imagem vira um quadrado onde um pedaço da imagem original some e fica um pedaço sobrando.

public static BufferedImage rotate(BufferedImage bufferedImage, int angdeg){
	AffineTransform at = new AffineTransform();
	at.rotate(Math.toRadians(angdeg), bufferedImage.getWidth() / 2.0, bufferedImage.getHeight() / 2.0);
	BufferedImageOp bio = new AffineTransformOp(at, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
	return bio.filter(bufferedImage, null);
}

Alguem tem algum idéia de como resolver este problema?
Não tenho experiência com AWT… então to tomando uma surra aqui!

Abraços

1 Resposta

R
public static BufferedImage rotateImage() {
		int ang = 90;
		BufferedImage original = "ponha uma imagem aqui";
		BufferedImage dest = new BufferedImage(original.getHeight(), original.getWidth(), original.getType());
		Graphics2D surface = dest.createGraphics();
		AffineTransform rotation = new AffineTransform();
		rotation.setToTranslation((dest.getWidth() - original.getWidth()) / 2.0, (dest.getHeight() - original.getHeight()) / 2.0);
		rotation.rotate(Math.toRadians(ang), original.getWidth()/2.0, original.getHeight()/2.0);
		surface.transform(rotation);
		surface.drawImage(original, 0, 0, null);
		surface.dispose();
		
		return dest;
	}
Criado 4 de outubro de 2007
Ultima resposta 23 de set. de 2009
Respostas 1
Participantes 2