Bonjour,

J'essaie depuis deux jours d'enregistrer en JPEG des images crées dans JPanel avec les méthodes de la classe Graphics. Voilà où j'en suis :

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
class SauverUneImage extends AbstractAction{
 
	public SauverUneImage (Panneau pan) {
		this.pan = pan;
	}
 
	public void actionPerformed(ActionEvent e){
		g = pan.getGraphics();
		Image LeDessin = pan.createImage(800, 550); 
		/*Je n'ai pas trouvé comment me servir de ce dessin*/
		/*Je n'arrive pas à faire la liaison entre le JPanel pan contenant le graphisme g et le BufferedImage*/
 
 
	{String CreeFich = JOptionPane.showInputDialog 
	(null, "Veuillez entrer le nom de votre image JPEG");
	try {if (CreeFich != null)
{FileOutputStream ArchImg = new FileOutputStream(CreeFich + ".jpg");
/*Dois-je créer un File avant le FileOutputStream comme je l'ai vu parfois?*/
	Rectangle Rect = pan.getBounds();
          /*Pareil, comment m'en servir?*/
	BufferedImage image = new BufferedImage(pan.getWidth(),pan.getHeight(),BufferedImage.TYPE_BYTE_INDEXED);
	Graphics2D graph = image.createGraphics();
	pan.paintAll(g);//what for?
 
	JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(ArchImg);
         encoder.encode(image);
         ArchImg.close();
		}
		}
	catch (Exception Ft){
		System.out.println("raté!");//pour l'instant.
		}
	}
	}
 
	Panneau pan;
	Graphics g;
	BufferedImage image;
 
}
pan est le JPanel. Pour l'instant, je n'utilise pas de JFileChooser.

L'encodeur JPEG marche, je l'ai testé avec une capture d'écran. Mais je n'arrive pas à faire de mon pan une image. En fait, alors que BufferedImage dérive de la classe Image, pan.createImage(800, 550) est refusé par le compilateur. Pour l'instant, la méthode me sort un JPEG de bonne dimension, mais tout noir!

Auriez vous une idée s'il vous plaît de ce que je dois faire? Merci d'avance.