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

2D Java Discussion :

Sauver une ImageIcon avec des float et int dans un dat


Sujet :

2D Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Points : 163
    Points
    163
    Par défaut Sauver une ImageIcon avec des float et int dans un dat
    Bonjour,

    Mon logiciel permet d'importer un JPEG sur lequel on dessine des rectangles et des ovales. La sauvegarde actuelle permet de conserver les coordonnées des rectangles et ovales sous forme de int
    sortie.writeInt(CetteFigure.getX());
    sortie.writeInt(CetteFigure.getY());
    sortie.writeInt(CetteFigure.getWx());
    sortie.writeInt(CetteFigure.getWy());
    etc.

    Le fond d'écran est conservé sous forme d'ImageIcon dans la RAM.

    Je voudrais le sauver avec le reste, je ne trouve pas la bonne méthode. J'ai imaginé le faire dessiner par un paintComponent partiel (juste l'icône) et le sauver en JPEG, que l'on réimporte ensuite lors de la restauration, mais je ne trouve pas la solution ni élégante, ni économe (je sais exporter en JPEG le dessin d'un JPanel). Je ne trouve pas comment transformer en ImageIO une ImageIcon non plus.

    Auriez-vous s'il vous plaît un bout de code qui me permette d'insérer dans mon fichier dat l'image?

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImageIO.write(icon.getImage(), "jpeg", new File..............
    Pour le fichier DAT aucune idee, avoir quel est sont reel format.

    Sinon via l'API Java tu peux te faire un fichier ZIP, GZIP ou JAR compresse que tu nommera comme bon te semble (extension comprise) contenant l'image d'une part et un fichier texte contenant les coordonnees d'autre part.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Points : 163
    Points
    163
    Par défaut
    Merci bouye, mais si je fais juste cela, il semble qu'il y ait conflit de nom de fichier : j'ai utilisé le même nom de fichier pour le fichier de valeurs et pour l'image.

    Pour l'instant, mon code fait ça :
    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
    try {DataOutputStream sortie = new DataOutputStream
                    (new FileOutputStream (nomDeFichier + "_HarmoniesOfColors.dat"));
     
                    sortie.writeInt(Projet.size());
     
                for (int i = 0; i < Projet.size(); i++){
                    Figure CetteFigure = Projet.get(i);
     
                    sortie.writeInt(CetteFigure.getType());
                    sortie.writeInt(CetteFigure.getMaterieau());
                    sortie.writeInt(CetteFigure.getX());
                    sortie.writeInt(CetteFigure.getY());
                    sortie.writeInt(CetteFigure.getWx());
                    sortie.writeInt(CetteFigure.getWy());
                    sortie.writeInt(CetteFigure.getCouleurPalette());
                    sortie.writeInt(CetteFigure.getDessin());
                }//fin du for figures    
     
                if (action.getFondEcran() != null) ImageIO.write((RenderedImage) action.getFondEcran().getImage(), "jpeg", nomDeFichier);
                else sortie.writeInt(0);
     
                    sortie.close();
     
                    action.setNomDeFichier(nomDeFichier + "_HarmoniesOfColors.dat");
     
                } //fin du try
    J'aimerais vraiment que l'image soit stockée avec les valeurs. Je buggue!!

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Points : 163
    Points
    163
    Par défaut
    Bon, pas beaucoup de réponses...

    Je viens de lire sur ce site un cours sur l'interface Serializable. Je vais essayer ça...

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Ce qui est normal puisque tu écrase le 1er fichier par un second puisque tu ouvres deux flux différents. ImageIO dispose de variantes qui prennent en parametre un flux déjà ouvert il me semble.

    Alternativement tu peux utiliser ImageIO sur un ByteArrayOutputStream ce qui sauvegardera l'image dans un byte[] en mémoire. Ensuite, écrire le byte[] resultat dans le flux du fichier dat (faire l'opération inverse avec un ByteArrayInputStream pour le décodage)
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Créer une liste avec des images et checkbox dans un formulaire
    Par bloodangel78 dans le forum Symfony
    Réponses: 5
    Dernier message: 22/07/2013, 17h19
  2. Générer une JComboBox avec des int
    Par Pirokkk dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 02/01/2008, 17h28
  3. [Struts] reset dans une ActionForm avec des int
    Par mariemor64 dans le forum Struts 1
    Réponses: 19
    Dernier message: 18/05/2006, 12h47
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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