Urgent!!!enregistrement jpanel dans jpg

Signaler
Messages postés
8
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
19 juillet 2006
-
 vadim -
Bonjour a tous!!!
je cherche dans le cadre d'un programme a faire pour le bahut a enregistrer un jpanel dans un fuchier jpg.
j'ai recuperer ce code mais il ne fonctionne pas car ma bufferedimage imagmodif est vide et je n'arrive pas a mettre mon jpanel dedans!!!
voici le code

JFileChooser save = new JFileChooser(); // boite de dialogue pour choisir le dossier de destination...
int returnVal = save.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION){
try{ // c ici que l'enregistrement de imagmodif se fait.


File fichier=new File(save.getSelectedFile().getName());
ImgIO_Save.write(imagmodif,"jpg",fichier); // soit format "jpg" soit "png"

}

catch (IOException ex){}
}

}

s'il vous plait aider moi c pour vendredi.....

"N'entres pas dans l'arène si t'es pas MATADOR!!!"

4 réponses

Messages postés
237
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
11 juillet 2006

Au moment de l'enregistrement tu n'as qu'a faire une capture d'ecran de ton JPanel et tu l'enregistres sous le nom indique du JFileChooser

cid019
Messages postés
8
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
19 juillet 2006

Et comment je fais pour faire une capture d'ecran de mon JPanel???
desole je suis handicape en java...

"N'entres pas dans l'arène si t'es pas MATADOR!!!"
Messages postés
333
Date d'inscription
dimanche 25 mai 2003
Statut
Membre
Dernière intervention
23 novembre 2009
1
Pour dessiner ton JPanel dans une BufferedImage, c'est pas compliqué :)



JPanel plan;
//.......
BufferedImage image = new BufferedImage(plan.getWidth(), plan.getHeight(),BufferedImage.TYPE_INT_RGB);
plan.paintComponent(image.getGraphics());


voilà



A+
Dobel
[Une fois rien, c'est rien; deux fois
rien, ce n'est pas beaucoup, mais pour trois fois rien, on peut déjà
s'acheter quelque chose, et pour pas cher]
Messages postés
3
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
17 février 2005

Bonjour,
voici un code qui te permet de mettre ton JPanel ds une image :
//code pour transformer son jpanel en image
BufferedImage bI = new BufferedImage(p.getWidth(),p.getHeight(),BufferedImage.TYPE_BYTE_INDEXED);
p.paint(bI.getGraphics());
try {
File f = new File("imagefilename.jpg");
FileOutputStream fichier = new FileOutputStream(f);
ImageIO.write(bI, "jpg", fichier);
fichier.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}

Mais si tu met uniquement ça ds ton main, ton image sera un rectangle noir. Donc voici à quoi doit ressembler ton main, pour avoir ton image correct :

public static void main(String[] args) {

JFrame frame = new JFrame();
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
Rectangle bounds = env.getMaximumWindowBounds();
frame.setBounds(bounds); //pour que la frame s'ouvre directement aux dimensions de la fenêtre
frame.setTitle("Test PageA3");
JPanel p = new JPanel();
frame.getContentPane().add(p);
//frame.setBackground(Color.white);
frame.setVisible(true);



//code pour transformer son jpanel en image
BufferedImage bI = new BufferedImage(p.getWidth(),p.getHeight(),BufferedImage.TYPE_BYTE_INDEXED);
p.paint(bI.getGraphics());
try {
File f = new File("imagefilename.jpg");
FileOutputStream fichier = new FileOutputStream(f);
ImageIO.write(bI, "jpg", fichier);
fichier.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}

Tiens nous au courant, si t'y arrives.
Oui, ça marche et c'est rapide!
EFFICACE et SIMPLE!
Un grand MERCI :-)

Vadim (Venant du monde Delphi et débutant en Java avec la même question)