Urgent!!!enregistrement jpanel dans jpg

matador215 Messages postés 8 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 19 juillet 2006 - 16 févr. 2005 à 12:48
 vadim - 28 mai 2018 à 15:40
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

cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
16 févr. 2005 à 13:45
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
0
matador215 Messages postés 8 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 19 juillet 2006
16 févr. 2005 à 17:49
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!!!"
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
16 févr. 2005 à 22:20
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]
0
cs_calimero13 Messages postés 3 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 17 février 2005
17 févr. 2005 à 08:36
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.
0
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)
0
Rejoignez-nous