IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Conversion tableau en image


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Points : 41
    Points
    41
    Par défaut Conversion tableau en image
    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

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    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

  3. #3
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut Enregistrer une image
    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
    |

  4. #4
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut Eureka !
    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
    |

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    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:
    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>
    Mais malheureusement aucune image ne s'affiche dans le navigateur...



    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 !

  6. #6
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut
    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
    |

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    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

    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;  
        } 
    }
    Je ne vois vraiment pas ce qui peut clocher... si certains ont des idées ça m'aiderait vraiment !

  8. #8
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut
    Il a l'air bien ton code, qu'est-ce qui ne fonctionne pas?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    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 ...)

  10. #10
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut Un autre test
    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
    |

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut
    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/

Discussions similaires

  1. [Free Pascal] Erreur exitcode 217 lors de la conversion d'une image en tableau
    Par _Hope_ dans le forum Free Pascal
    Réponses: 7
    Dernier message: 18/05/2009, 20h54
  2. [HTML] [Débutant] Tableau et images
    Par skandas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/06/2005, 01h01
  3. Conversion de l'image en nuance de gris
    Par tlemcenvisit dans le forum C++Builder
    Réponses: 11
    Dernier message: 11/04/2005, 02h15
  4. Réponses: 3
    Dernier message: 03/03/2005, 17h27
  5. Tableau et image
    Par jean78000 dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/11/2004, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo