Bonsoir,
Dans le cadre d'un projet professionnel, je dois créer au sein d'un applet Java une classe Rotation qui tourne l'image courante affichée après clic sur un bouton.
M'étant inspirée de divers codes dont certains proposés sur le forum, je vous poste ci-dessous ce que j'ai écrit. Je n'ai aucune erreur à la compilation, mais lorsque j'exécute mon applet et que je clique sur le bouton, voici ce que l'on me dit:

Exception in thread "AWT-EventQueue-1" java.awt.image.ImagingOpException: Unable to transform src image
at java.awt.image.AffineTransformOp.filter(Unknown Source)
at Rotation.rotate_horaire(Rotation.java:141)
at Rotation$RotationListener.actionPerformed(Rotation.java:203)


La ligne 141 est la suivante:
op.filter(newImg,newImg2) ;
La ligne 203 est la suivante:
data.setImageToDisplay(rotate_horaire(data.getImageToDisplay()));


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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class Rotation extends Operation
{
	//déclaration des paramètres de l'image:
	int w;  // largeur de l'image
	int h;  // hauteur de l'image
 
	//déclaration des composants:
	JPanel jp_opt;
	JPanel jp_rot = new JPanel();
	JButton jb_adm=new JButton("-> horaire");
 
[...]
 
       public BufferedImage rotate_horaire(BufferedImage ic)
	{
 
        w = ic.getWidth();
        h = ic.getHeight();
 
        BufferedImage newImg2= new BufferedImage(h, w, BufferedImage.TYPE_INT_RGB);
    	    BufferedImage newImg = ic;
 
    	    AffineTransform tx = new AffineTransform();
    	    AffineTransform tx2 = new AffineTransform();
    	    tx.rotate((Math.toRadians(90)),(w/2),(h/2));
    	    tx.translate((w-h)/2,(w-h)/2);
    	    AffineTransformOp op = new AffineTransformOp(tx,  AffineTransformOp.TYPE_BILINEAR);
    	    AffineTransformOp op2 = new AffineTransformOp(tx2,  AffineTransformOp.TYPE_BILINEAR);
 
    	    op.filter(newImg,newImg2) ;
    	    op2.filter(newImg2,null) ;
    	    return newImg2;
	}
 
[...]
 
public void actionPerformed(ActionEvent ae){
			JButton jb_presse =(JButton) ae.getSource();
			if (jb_presse == jb_adm)//bouton aiguille d'une montre
			{
			//rotation sens des aiguilles d'une montre (rotate_horaire):
				data.setImageToDisplay(rotate_horaire(data.getImageToDisplay()));
			}
}
Si vous pouvez m'aider, merci d'avance !