Bonjour à tous, j'ai cherché en vain, sur les forums etc...mais j'ai rien trouvé alors je poste ici ma question.

Voilà je souhaite afficher une image dont on a préalablement fait une rotation.

voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
BufferedImage image = ImageIO.read(new File(nomImage));
					image=rotation(image, 90);
					g.drawImage(image, 0, 0, null);
Le problème, c'est que j'ai droit à une erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Unknown image type 0
Mon image est une png. J'ai essayé avec des jpg, et cela fonctionne !

Ce qui m'étonne le plus, c'est qu'une buffered image est indépendante du type de l'image (d'après ce que j'ai pu lire).

Voyez-vous d'où viendrais le problème par chance ?

Par avance merci.

EDIT :

Pour info, voici la methode de rotation (trouvée sur internet)

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
	 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);
		}