Bonjour,
Je cherche une solution pour convertir un tableau de données en image (png par exemple).
Existe-t-il un moyen de le faire en java ?
Je n'arrive pas à trouver....
Merci par avance pour votre aide
Bonjour,
Je cherche une solution pour convertir un tableau de données en image (png par exemple).
Existe-t-il un moyen de le faire en java ?
Je n'arrive pas à trouver....
Merci par avance pour votre aide
Si tu affiches ton tableau via une interface graphique Java en Swing (JTable par exemple), il n'est effectivement pas dur de récupérer sa représentation graphique pour l'enregistrer sous la forme d'une image.
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
Bonjour,
voici un post pour t'aider dans ton projet, du code pour enregistrer une image au format PNG, JPG ou GIF : http://www.developpez.net/forums/sho...02#post2371102
Pour créer ton image, j'ai pensé à surcharger la méthode paint(Graphics g) de la classe JFrame, mais je n'ai pas réussi.
Si tu produis une BufferedImage, tu pourras l'enregistrer grâce à ImageSaver.
__________________________________
| +
| Sylvain Tournois - Création logicielle
|
| sylv.tournois.free.fr
|
Ca y est !
Voici une JFrame qui fait des screen shots.
Si tu affiche ton tableau dedans, tu pourras sans problème le convertir en image.
Le lien : http://www.developpez.net/forums/sho...16#post2371116
__________________________________
| +
| Sylvain Tournois - Création logicielle
|
| sylv.tournois.free.fr
|
Merci beaucoup pour vos réponses, c'est super sympa !
J'ai fait un petit code pour tenter de convertir une table toute simple
Voici ce code
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 import java.awt.*; import javax.servlet.*; import javax.servlet.http.*; import java.awt.image.BufferedImage; import java.io.*; import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.table.*; public class tableau1 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Object cols[] = {"this", "is", "a test"}; Object data[][] = {{"a","b","c"},{"d","e","f"},{"g","h","i"}}; JTable table = new JTable(data,cols); BufferedImage image = new BufferedImage(table.getWidth(), table.getHeight() ,BufferedImage.TYPE_INT_RGB); response.setContentType("image/png"); OutputStream ous = response.getOutputStream(); ImageIO.write(image,"png",ous); } }
J'appelle cette servlet dans le fichier jsp suivant:
Mais malheureusement aucune image ne s'affiche dans le navigateur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <HTML> <HEADER> <TITLE>Test</TITLE> </HEADER> <BODY> <H2>Test</H2> <IMG SRC=/test2/servlet/tableau1 BORDER=1 WIDTH=400 HEIGHT=300/> </body> </html>
Certains d'entre vous auraient-ils des idées ? Je ne sais vraiment plus quoi faire, c'est pourtant quelque chose qui paraît tout simple
Merci beaucoup par avance !
Je ne suis pas sûr que les applets soient mieux pour commencer, je ne les connais pas encore, je suis plutôt applis.
Dans ton code, quelles sont les méthodes qui transforment ta BufferedImage de départ (vide) en une image qui contient ta table?
D'autre part, quelle est la partie de ton code qui gère l'affichage?
Ce que j'en vois c'est qu'il est normal que ton applet n'affiche rien, mais inspire-toi du JFrameScreenShot et de ImageSaver pour t'aider sur les méthodes d'affichage et de dessin.
__________________________________
| +
| Sylvain Tournois - Création logicielle
|
| sylv.tournois.free.fr
|
Merci pour ta réponse. Effectivement il manquait une instruction pour écrire dans la BufferedImage
J'ai piqué sur le net un code pour transformer une Jtable en Bufferedimage, que j'ai ajouté à mon prog.
Ca devrait donc théoriquement marcher .... mais malheureusement pas !
Voici mon nouveau code
Je ne vois vraiment pas ce qui peut clocher... si certains ont des idées ça m'aiderait vraiment !
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54 import java.awt.*; import java.awt.image.*; import javax.servlet.*; import javax.servlet.http.*; import java.awt.image.BufferedImage; import java.io.*; import javax.imageio.*; import javax.swing.*; import javax.swing.table.*; import java.util.*; import javax.imageio.stream.ImageOutputStream; public class tableau1 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Object cols[] = {"this", "is", "a test"}; Object data[][] = {{"a","b","c"},{"d","e","f"},{"g","h","i"}}; JTable table = new JTable(data,cols); response.setContentType("image/png"); OutputStream ous = response.getOutputStream(); ImageIO.write(createImage(table),"png",ous); ous.close(); } public static BufferedImage createImage(JTable table) { //get the table header component JTableHeader tableHeaderComp = table.getTableHeader(); //Calculate the total width and height of thr table iwth the header int totalWidth = tableHeaderComp.getWidth() + table.getWidth(); int totalHeight = tableHeaderComp.getHeight() + table.getHeight(); //create a BufferedImage object of total width and height BufferedImage tableImage = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_INT_RGB); //get the graphics object from the image Graphics2D g2D = (Graphics2D)tableImage.getGraphics(); //paint the table header on image graphics tableHeaderComp.paint(g2D); //now translate the origin to (0, height of table header) g2D.translate(0, tableHeaderComp.getHeight()); //now paint the table on the image graphics table.paint(g2D); //return the table image return tableImage; } }
Il a l'air bien ton code, qu'est-ce qui ne fonctionne pas?
__________________________________
| +
| Sylvain Tournois - Création logicielle
|
| sylv.tournois.free.fr
|
Salut !
Ben justement, je ne vois pas ce qui pourrait encore clocher...
Mais quand je l'exécute, j'obtiens une image vide (comme dans la capture d'écran que j'ai postée quelques posts plus haut ...)
Salut,
j'ai posté une classe pour t'aider dans ton problème, ça ne le résoudra pas entièrement mais ça t'ouvre de bonnes pistes.
Une JFrame qui fait des captures de son contenu :
http://www.developpez.net/forums/sho...16#post2371116
Il te suffit de mettre ta JTable en composant de la JFrame et ça devrait te rapprocher du résultat que tu veux.
En mixant avec ce que tu as déjà trouvé, tu as tout je crois.
__________________________________
| +
| Sylvain Tournois - Création logicielle
|
| sylv.tournois.free.fr
|
Je ne vois pas non plus ce qui cloche dans ton code, mais tu peux jetter un coup d'oeil à la librairie JFreeChart qui te permet de faire exactement ce que tu veux, à savoir convertir un tableau de données en image.
http://www.jfree.org/jfreechart/
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager