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

Java ME Discussion :

Convertir un byte[] en image


Sujet :

Java ME

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 Convertir un byte[] en image
    Bonjour,

    1) Je convertis ce que reçois en InputStream (des bits) en format String
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    InputStream in = sc.openInputStream();
     
                    String str = in.toString();
    2) Je convertis ce String en un tableau de byte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] byt = str.getBytes();
    3) Je cherche à convertir ce tableau de byte en image et l'afficher sur l'écran du téléphone.

    Quelqu'un saurait-il m'expliquer comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Salut,

    d'après la Javadoc, la classe Image a une floppée de fonctions statiques CreateImage dont une qui prend comme paramètre un tableau de byte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    createImage(byte[] imageData, int imageOffset, int imageLength)

  3. #3
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Par défaut
    Salut,
    merci pour votre réponse;
    Recherche faite, je trouve ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ImageItem myImage = new ImageItem(null,Image.createImage(byt, 0, byt.length),ImageItem.LAYOUT_CENTER | ImageItem.LAYOUT_NEWLINE_BEFORE |ImageItem.LAYOUT_NEWLINE_AFTER,null);
     
    form.append(myImage);
    mais mon image ne s'affiche pas
    ???????

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Est-ce qu'une exception est levée ?
    Ton image est sous quel format (ils ne sont pas tous acceptés...) ?

  5. #5
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 51
    Par défaut
    aucune exception est levée
    voila mon 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
    sc = (SocketConnection) Connector.open("socket://localhost:5555");
     
                    System.out.println("ok!");
                    form = new Form("Reception Datamatrix");
                    form.append("DOWNLOAD EN COUR..........");
                    InputStream in = sc.openInputStream();
                    System.out.println("ok!!");
                    String str=in.toString();
                    byte[] byt=str.getBytes();
                    System.out.println("ok!!!");
     
                    ImageItem datamatrix = new ImageItem(null,Image.createImage(byt, 0, byt.length),ImageItem.LAYOUT_CENTER | ImageItem.LAYOUT_NEWLINE_BEFORE |ImageItem.LAYOUT_NEWLINE_AFTER,null);
                    System.out.println("ok!!!!");
                    form.append(datamatrix); 
     
                    System.out.println("ok!!!!!");
    dans l'output, voila ce que j'obtiens:
    ok!
    ok!!
    ok!!!
    Execution completed.
    je ne sais pas pourquoi le 4ième et 5ième ok ne s'affiche pas dans l'output
    veuillez m'aider
    est ce que le canvas intervient dans l'affichage
    veuillez me clarifier ce point svp
    merci
    coté serveur:
    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
    soc = ss.accept();
                    jta.append("[" + new Date(DateFormat.LONG) + "]>Le client " + nbrclient + " : " + InetAddress.getLocalHost().getHostAddress() + " est connecté\n\n");
                    in = new BufferedReader(new InputStreamReader(soc.getInputStream()));
                    out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(soc.getOutputStream())),true);
     
                    DataMatrix barcode = new DataMatrix(); 
                    barcode.setData("DATA MATRIX"); 
                    try {
     
                    //barcode.renderBarcode("c:/barcode.gif");
                    BufferedImage image = barcode.renderBarcode();
                    //BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
                    //image = ImageIO.read(new File("C://Documents and Settings/Administrateur.IMEN/Mes documents/NetBeansProjects/essai/src/essai/kid.jpg"));
                    //JOptionPane.showMessageDialog(null, new ImageIcon(image), "", -1);
                    int w = image.getWidth();
                    int h = image.getHeight();
                    System.out.println("width, height: " + w + ", " + h);
     
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    ImageIO.write(image, "JPEG", baos);
                    StringBuilder sb = new StringBuilder();
                    byte[] imageByteArray = baos.toByteArray();
                    //for (int i=0; i<= imageByteArray.length; i++) System.out.println(imageByteArray[i]+"\t");
                    for (byte by : imageByteArray)
                        sb.append(Integer.toBinaryString(by & 0xFF));System.out.println("ok!!!!!!!!!");
                        //System.out.println(sb.toString());
                        out.println(sb.toString()); 
                        out.flush(); System.out.println("ok!!");
                    } catch (Exception ex) {System.out.println("erreur: "+ex.getMessage()); }
    et dans l'output, voila ce que j'obtiens:
    width, height: 130, 130
    ok!!!!!!!!!
    ok!!

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Tu as peut-être une erreur qui est captée a un niveau plus haut, comme tu n'as pas de try/catch dans ce bout de code.

    Tu devrais rajouter une try/catch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try
    {
        ImageItem datamatrix = new ImageItem(null,Image.createImage(byt, 0, byt.length),ImageItem.LAYOUT_CENTER | ImageItem.LAYOUT_NEWLINE_BEFORE |ImageItem.LAYOUT_NEWLINE_AFTER,null);
        System.out.println("ok!!!!");
        form.append(datamatrix);
    }
    catch(Exception e)
    {
        System.out.println(e.ToString());
    }
    (Ca fait longtemps que je n'ai plus fait de Java, et le try/catch est peut-être mal écrit. Merci de bien vouloir corriger, si nécessaire.)

    Sinon, est-ce que dans tout tes try/catch tu affiches l'erreur dans la console ?
    Si non, alors c'est mal et il faut l'afficher ! Autrement tu n'as pas de moyens de savoir si ça pète quelque part.

Discussions similaires

  1. [VB.NET] Convertir Tableau Byte[] en image
    Par seemax dans le forum Windows Forms
    Réponses: 5
    Dernier message: 14/09/2009, 18h23
  2. Convertir une string en image
    Par worldchampion57 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/05/2005, 09h55
  3. [C#] Convertir des bytes en string
    Par sorcer1 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/02/2005, 15h52
  4. [C#] Convertir un tableau de byte en Image
    Par goulhasch dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/01/2005, 10h12

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