Bonjour,

Je souhaite optimiser ma méthode pour la rotation des images voyez vous dans mon code (que je partage avec vous) quelques choses de méchant ?

Merci par avance.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
	public BufferedImage rotation(BufferedImage bi, int degrees) {
		degrees = degrees % 360;
		if (degrees > 180)
			degrees = 180 - degrees;
		double angle = (degrees * Math.PI) / 180.0f;
		if (angle == 0.0)
			return bi;
		// TODO une vrai rotation pour calculer la taille exacte de l'image
		// après rotation
		int sx = bi.getWidth();
		int sy = bi.getHeight();
		if (degrees == 90 || degrees == -90) {
			sx = bi.getHeight();
			sy = bi.getWidth();
		}
		BufferedImage rot = new BufferedImage(sx, sy, bi.getType());
		AffineTransform at = new AffineTransform();
		at.translate(sx / 2, sy / 2);
		at.rotate(angle);
		at.translate(-bi.getWidth() / 2, -bi.getHeight() / 2);
		AffineTransformOp ato = new AffineTransformOp(at,
				AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
		return ato.filter(bi, rot);
	}