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

avec Java Discussion :

Récupérer une image RGB à partir d'une suite de bits


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Par défaut Récupérer une image RGB à partir d'une suite de bits
    Bonjour,

    j'ai réussit à convertir une image en une image RGB et puis en une suite de bit (des 0 et des 1).
    Maintenant, je veux faire le processus inverse, depuis une suite de bit, obtenir une image RGB et puis l'image principale.
    veuillez me donner un coup de main (un tuto, un bout de code..) et je serais très reconnaissante.
    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Par défaut
    Bonjour,

    Va voir ici cela pourrait peut-être t'être utile !

    Si tu as un tableau de bits, tu peux aisément le transformer en tableau de byte (un byte est une successions de 8 bits) et ensuite reconvertir l'image.

  3. #3
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Par défaut
    merci pour votre réponse Dark_TeToN,

    mais, ça n'a pas résolu le problème.
    en fait, recherche faites , j'ai abouti à ce bout de 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
    try{
                    ByteArrayInputStream bis = new ByteArrayInputStream(byt);
                    Iterator<?> readers = ImageIO.getImageReadersByFormatName("jpg");             
                    ImageReader reader = (ImageReader) readers.next();
                    Object source = bis; 
                    ImageInputStream iis = ImageIO.createImageInputStream(source);
                    reader.setInput(iis, true);
                    ImageReadParam param = reader.getDefaultReadParam();
                    Image img = reader.read(0, param);
                    BufferedImage bufferedImage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
                    //bufferedImage is the RenderedImage to be written
                    Graphics2D g2 = bufferedImage.createGraphics();
                    g2.drawImage(img, null, null);
                    File imageFile = new File("C:\\newrose2.jpg");
                    ImageIO.write(bufferedImage, "gif", imageFile);
                    System.out.println(imageFile.getPath());
                    }
                    catch(Exception expt)
                    {System.out.println("\nc'est ici l'erreur"+expt.getMessage());}
    mais malheureusement on m'affiche cette erreur
    c'est ici l'erreurNot a JPEG file: starts with 0x6a 0x61
    je mets à votre disposition le code qui m'a permis de convertir les bits en byte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String str=in.toString();
                    byte[] byt=str.getBytes();
                    try{
                        for(int k=0;k<byt.length;k++)
                        System.out.print(byt[k]+"\t");
                    }
                    catch(Exception exp)
                    {System.out.println("\nici l'errur"+exp.getMessage());}
    et ça marche parfaitement
    je vous remercie en avance

  4. #4
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Par défaut
    veuillez me corriger le premier bout de code svp.
    merci

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImageIO.write(bufferedImage, "gif", imageFile);
    Tu ouvres une image encodée en JPG... et tu écris en GIF ?
    Qu'est-ce que tu souhaites faire de A à Z ? Difficile de t'aider plus...

  6. #6
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Par défaut
    Bonjour Dark_TeToN,
    mon travail consiste en l'envoi d'une image via socket depuis serveur vers client.
    pour se faire, il faut convertir mon image initiale en image RGB et puis vers un tableau de bit pour qu'il soit envoyé via socket (puisque aucun type de donnée puisse véhiculer via socket sauf les données binaire "des 0 et 1").
    c'est fait et j'ai réussit à envoyer mon image sous format binaire et le client les reçoit.
    je veux mnt récupérer mon image depuis cette suite de bit que le client reçoit.
    ce que je fait tout d'abord est de convertir la suite de bits en un byte array.
    et c'est à l'aide de ce bout de code que je le fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String str=in.toString();
                    byte[] byt=str.getBytes();
                    try{
                        for(int k=0;k<byt.length;k++)
                        System.out.print(byt[k]+"\t");
                    }
                    catch(Exception exp)
                    {System.out.println("\nici l'errur"+exp.getMessage());}
    puis, à partir de ce bytearray, je reconstruit mon image.
    voila, c'est le demandé. j'espère être claire.
    merci pour votre aide

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par b_imen Voir le message
    c'est ici l'erreurNot a JPEG file: starts with 0x6a 0x61
    En même temps, ce code sert à lire une image JPEG. Si tes données ne sont pas une image JPEG, ça ne risque pas de marcher.

    Le truc, c'est qu'on ne sait pas précisément ce que c'est, tes données. Tu dis que ce sont "une suite de bits". Alors déjà il n'y a pas de type "suite de bits" en Java, alors on ne risque pas de deviner de quoi tu parles.
    Ensuite, cette suite de bits est issue de la conversion d'une "image RGB". Mais encore ? Il y a une infinité de façons de représenter une image RGB, ça ne nous dit pas laquelle.

    On ne peut pas t'aider si tu ne nous parles pas de ton problème.

    Citation Envoyé par b_imen Voir le message
    veuillez me corriger le premier bout de code svp.
    Il n'y a rien à corriger, ce n'est probablement pas la bonne méthode.
    Mais on ne peut pas connaître quelle est la bonne méthode tant que tu ne nous as pas parlé du problème.

    Citation Envoyé par b_imen Voir le message
    je mets à votre disposition le code qui m'a permis de convertir les bits en byte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String str=in.toString();
                    byte[] byt=str.getBytes();
                    try{
                        for(int k=0;k<byt.length;k++)
                        System.out.print(byt[k]+"\t");
                    }
                    catch(Exception exp)
                    {System.out.println("\nici l'errur"+exp.getMessage());}
    et ça marche parfaitement
    Ça m'étonnerait que ça marche, ni parfaitement, ni un peu. Tu dis que ça marche, mais tu ne nous dis pas pourquoi tu crois ça.
    Bon, c'est pas complètement impossible, après tout on ne connaît ni le type, ni le contenu de la variable in.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [Python 3.X] Créer une image png à partir d'une image de format quelconque avec Python
    Par bguy4 dans le forum Général Python
    Réponses: 3
    Dernier message: 30/10/2014, 10h49
  2. Réponses: 1
    Dernier message: 11/01/2012, 18h21
  3. Récupérer une image JPEG à partir d'une vidéo
    Par kurul1 dans le forum C++Builder
    Réponses: 8
    Dernier message: 09/08/2006, 10h51
  4. Réponses: 13
    Dernier message: 23/06/2006, 12h12
  5. Poids d'une image a partir d'une url
    Par matique dans le forum Langage
    Réponses: 4
    Dernier message: 11/02/2006, 20h41

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