Problème de conversion Image en byte[] et byte[] en Image

kigrez Messages postés 3 Date d'inscription dimanche 19 septembre 2004 Statut Membre Dernière intervention 12 avril 2010 - 8 janv. 2009 à 13:04
nicotwo Messages postés 34 Date d'inscription samedi 14 juin 2008 Statut Membre Dernière intervention 5 février 2010 - 8 janv. 2009 à 18:01

2 réponses

kigrez Messages postés 3 Date d'inscription dimanche 19 septembre 2004 Statut Membre Dernière intervention 12 avril 2010
8 janv. 2009 à 13:06
Bonjour a tous,

J'ai un petit problème. j'ai réalisé un programme qui permet de capturer des images à partir d'une Webcam en utilisant l'api JMF. Une fois l'image capturée je voudrais l'envoyer par UDP à un client pour qu'il l'affiche dans une applet.

Pour envoyer l'image en UDP, il faut l'envoyer en byte[]. Or lorsque l'applet récupère l'image, elle récupère un byte[] qu'elle doit convertir en Image pour pouvoir l'afficher.

C'est ici que ça ne passe pas. La conversion "Image en byte[]" et "byte[] en Image" que j'utilise ne fonctionne pas. L'image que j'ai apres les conversion est toute noir.

Voici le code que j'utilise pour convertir:

  
// conversion "Image en byte[]"
  private byte [] getImgBytes(Image image)
     {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         try {
             ImageIO.write(getBufferedImage(image), "JPEG", baos);
         } catch (IOException ex) {
             //handle it here.... not implemented yet...
         }
         return baos.toByteArray();
     }


// conversion " byte[] en Image"
   public Image getbyteimg(byte[] buf)
   {   
        ImageIcon imageIcon = new ImageIcon(buf);
        return imageIcon.getImage();
    }



Est-ce que quelqu"un pourrait m'aider.(J'ai déja fait des recherches sur internet mais les solutions proposés ne fonctionnent pas.)
0
nicotwo Messages postés 34 Date d'inscription samedi 14 juin 2008 Statut Membre Dernière intervention 5 février 2010
8 janv. 2009 à 18:01
Bonjour,

Tu peux peut-être essayer de créer toi même ton algorythme de conversion de l'image en byte et vice versa.
Pour cela, il te suffit de mettre la taille de l'image sur les 8 premiers octets et ensuit d'envoyer le code de chaque pixel (codé sur 3 ou 4 ostets = 24 ou 32 bits selon l'encodage de l'image.
Pour celà, utilise la classe BufferedImage,qui te permet de récupérer la couleur de chaque pixel qui tu met dans un tableau de byte et ensuite que tu envoies.
Pour cela, fais BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Sinon, utilise BufferedImage.TYPE_INT_ARGB_PRE  a la place de BufferedImage.TYPE_INT_ARGB pour avoir la transparence.
Ensuite, récupère le graphique du BufferedImage avec la méthode createGraphics et dessine ton image.
pour récupérer les pixels, utilise la méthode gtRGB(x,y) de la classe BufferedImage.
Pour plus d'infos, je te renvoie à l'API java.

J'espère que cette réponse résoud ton problème.
0
Rejoignez-nous