Urgent!!!enregistrement jpanel dans jpg

matador215 8 Messages postés dimanche 23 janvier 2005Date d'inscription 19 juillet 2006 Dernière intervention - 16 févr. 2005 à 12:48 - Dernière réponse :  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!!!"
Afficher la suite 

Votre réponse

5 réponses

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.