cs_schneider
Messages postés11Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention28 mai 2004
-
27 avril 2004 à 11:30
cs_calimero13
Messages postés3Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention17 février 2005
-
16 févr. 2005 à 23:19
bonjour,
je voudrais convertir le contenu d'un jpanel (graphics) en une image jpeg. Quelqu'un a t-il la solution?
cs_schneider
Messages postés11Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention28 mai 2004 27 avril 2004 à 14:36
voila :
j'ai d'abord créer un BufferedImage, j'ai récupérer son graphics, ensuite j'ai fait tout mes dessin dessus avec la méthode paint(Graphics g) et pis voila.
Après c'est la partie enregistrement :
/*tu passe en paramètres ton BufferedImage, le type de fichier (jpeg, png, ...) et le nom de ton fichier pour la méthode write()*/
try {
FileOutputStream fichier = new FileOutputStream(nom_fichier);
ImageIO.write(BufferedImage, "jpeg", fichier);
} catch (Exception e) {
System.out.println(e.getMessage());
}
kaloway
Messages postés358Date d'inscriptionjeudi 24 octobre 2002StatutMembreDernière intervention13 avril 2020 27 avril 2004 à 17:56
kaloway
voila un bout de code. il fait une capture de l ecran et l enregistre comme un fichier.
try{
Robot robot=new Robot();
//capture de l image selon un rectangle de 300*400 et de point de depart 0 0.
BufferedImage image=robot.createScreenCapture(newRecta(0,0,300,400));
File file=new File(chemin+"/image.jpg");
ImageIO.write(image, "jpeg",file);
}
catch(AWTException ex){
System.out.print(ex);
}
catch(IOException ex){
System.out.print(ex);
}
Kael_Kael
Messages postés7Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention 2 juin 2004 28 mai 2004 à 09:17
Binjour,
je suis actuellement à la recherche d'un moyen de générer une image à partir d'un jpanel (contenant des objets swing : jbutton, jtable, dessin ...). Serait-il possible d'avoir une description plus détaillé de la méthode de Schneider ?
cs_schneider
Messages postés11Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention28 mai 2004 28 mai 2004 à 09:33
Ma méthode marche uniquement pour récupérer des dessins faits sur le graphics d'un jpanel et pas pour créer une image à partir d'un jpanel.
Je pense que tu devrais plutot la méthode de kaloway.
voila mon code plus détaillé si tu le veux vraiment :
//dans le constructeur de ma classe qui extends JPanel
this.imgPlanning = new BufferedImage
(x,y, BufferedImage.TYPE_BYTE_INDEXED);
this.g = imgPlanning.createGraphics();
this.paint(g);
...
//dans la méthode paint(), tu fais tout tes dessins
//ensuite tu récupére le contenu dans un fichier
try {
FileOutputStream fichier = new FileOutputStream(nom_fichier);
ImageIO.write(BufferedImage, "jpeg", fichier);
} catch (Exception e) {
System.out.println(e.getMessage());
}
Kael_Kael
Messages postés7Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention 2 juin 2004 28 mai 2004 à 10:02
Merci de ta réponse,
en fait je réussi à créer une image à partir de n'mporte quel jpanel (je crois) avec la méthode suivante :
BufferedImage bI = new BufferedImage(jPanel.getWidth(),jPanel.getHeight(),BufferedImage.TYPE_BYTE_INDEXED);
jPanel.paint(bI.getGraphics());
try {
FileOutputStream fichier = new FileOutputStream(nom_fichier);
ImageIO.write(bI, "jpeg", fichier);
fichier.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
mais le pb c'est lorsque le jpanel est plus grand que l'écran, j'ai des ascenceur , mais je voudrais que la tranformation en image me rende le jpanel en entier et non ce qui est affiché à l'écran. Je souhaiterai donc avoir le jpanel en image comme si l'écran était assez grand pour l'afficher sans ascenseur.
J'avai également remarqué la méthode avec le java.aw.Robot, mais le même problème se pose : l'image créé contient les ascenceurs :( .
Kael_Kael
Messages postés7Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention 2 juin 2004 28 mai 2004 à 10:13
Le problème est résolu,
en fait, l'erreur venait de moi.
Les ascenceurs apparaissaient encore car le jpanel que je prenais contenait le jscrollPane. Il faut prendre le Jpanel contenu par le jscrollPane. Dans ce cas les ascenceurs généré par ce jscrollpane n'apparait pas.
cs_calimero13
Messages postés3Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention17 février 2005 16 févr. 2005 à 23:19
Salut Keal_Jeal,
je cherche aussi à transformer mon JPanel contenant des JLabel, des
Jtextfield... en une image, pour cela j'ai utiliser ton code précédent,
seulement, j'ai un rectangle noir à la place de mon jpanel .