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

C++ Discussion :

Image jpeg : buffer -> file


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par d�faut Image jpeg : buffer -> file
    Bonjour,

    Voici mon probl�me :

    Je r�cup�re dans un buffer une image jpeg � partir d'une cam�ra IP.
    Je connais donc la taille du buffer.

    Ensuite je copie l'image sur le disque avec fwrite.

    Sur linux, je peux visualiser l'image copi�e ; cepedant sur windows ce n'est pas le cas. Lorsque je l'ouvre avec gimp par exemple j'ai le mesage suivant :
    "Corrupt JPEG data: premature end of data segment"

    Je me demande si le probl�me vient des diff�rences entre linux et windows concernant les fins de ligne.

  2. #2
    Invit�(e)
    Invit�(e)
    Par d�faut
    Bonjour,

    A propos des fin de ligne, il y a effectivement des difff�rence entre linux et windows. LEs fichiers sont ils ouvert en mode texte ou binaire ?

    De plus, les images g�n�r�es sur linux sont elles visualisables sur windows (et inversement) ?

  3. #3
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par mabu Voir le message
    A propos des fin de ligne, il y a effectivement des difff�rence entre linux et windows.
    Oui mais cela ne concerne que les fichiers textes. Je ne pense pas qu'un fichier jpg entre dans cette act�gorie

    Une autre possibilit� est que le fichier jpg soit l�g�rement invalide/corrompu/non conforme, et que gimp sous linux sait le g�rer alors que sous windows, il n'y arrive pas.

    Tu as essay� avec d'autre visualiseur d'e fichiers ?
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre exp�riment�
    Inscrit en
    Octobre 2007
    Messages
    285
    D�tails du profil
    Informations personnelles :
    �ge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par d�faut
    Bonjour,

    Quel est le format image du fichier ?
    Tout d�pends des besoins, mais l'utilisation d'une librairie image fournissant des fonctions d'export vers les formats courants (Bitmap, jpeg, tiff, ...) ne vous faciliterait pas la vie ?

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par d�faut
    Tout d'abord je vous remercie pour votre aide.

    Les fichiers sont ouverts en mode binaire : fopen(file.c_str(), "wb")

    Les images cr��es sur linux sont �galement visualisables sur windows.

    Les images sont au format jpeg.

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par d�faut
    Autre remarque :
    Les images cr�es sur windows ne sont pas visualisables sur linux.
    Donc je ne pense pas que gimp corrige le fichier.

    Le probl�me viendrait donc lors de l'�criture du fichier jpeg sur windows.


    J'ai trouv� une lib (FreeImage) qui permet d'enregistrer dans un fichier en bmp, � partir de mon buffer jpeg.
    Evidemment �a marche sur linux, mais pas sur windows.
    Mais dans ce cas, peut-�tre que le probl�me vient du fait que la dll est compil�e avec MVSC alors que moi j'utilise le compilateur mingw. ( j'ai du pour cela modifier l�g�rement le fichier .h de la lib)

  7. #7
    Membre exp�riment�
    Inscrit en
    Octobre 2007
    Messages
    285
    D�tails du profil
    Informations personnelles :
    �ge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par d�faut
    Citation Envoy� par sagopa Voir le message
    Les fichiers sont ouverts en mode binaire : fopen(file.c_str(), "wb")
    Il ne devrait pas avoir de probl�me dans ce cas entre windows et linux si mes souvenirs sont bon.

    Citation Envoy� par sagopa Voir le message
    Sur linux, je peux visualiser l'image copi�e ; cepedant sur windows ce n'est pas le cas. Lorsque je l'ouvre avec gimp par exemple j'ai le mesage suivant :
    "Corrupt JPEG data: premature end of data segment"
    ... et ...
    Citation Envoy� par sagopa Voir le message
    Les images cr��es sur linux sont �galement visualisables sur windows.


    Citation Envoy� par sagopa Voir le message
    Les images sont au format jpeg.
    Est-ce que la fonction qui transforme le buffer en jpeg et OK ? Peut �tre que le standard n'est pas tout � fait respect� ? La cam�ra IP fournit peut �tre une image type "jpeg" (algo DCT, ....) mais il manque peut �tre des infos pour que linux puisse lire les donn�es.
    Comment est transf�rer l'image de la cam�ra � votre logiciel ?

  8. #8
    Membre exp�riment�
    Inscrit en
    Octobre 2007
    Messages
    285
    D�tails du profil
    Informations personnelles :
    �ge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par d�faut
    Citation Envoy� par sagopa Voir le message
    Autre remarque :
    Evidemment �a marche sur linux, mais pas sur windows.
    Mais dans ce cas, peut-�tre que le probl�me vient du fait que la dll est compil�e avec MVSC alors que moi j'utilise le compilateur mingw. ( j'ai du pour cela modifier l�g�rement le fichier .h de la lib)
    Euh, effectivement, ce n'est pas franchement recommand� de croiser les compilateurs. En quoi avez vous modifi� le fichier .h ?

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par d�faut
    J'ai l'impression que je me suis mal fait comprendre.

    Alors je r�capitule.
    Les images cr�es sur linux sont visualisables sur linux et sur windows.
    Celles cr�es sur windows ne sont visualisables ni sur linux ni sur windows.

    Je n'ai pas de fonction pour transformer le buffer en jpeg. En faite, j'envoie une requ�te http � la cam�ra en utilisant les sockets (send). Cette cam�ra me renvoie alors une image jpeg avec une entete http (receive). Ensuite je s�pare l'entete http et l'image jpeg.


    Concernant la lib FreeImage, j'ai du mettre en commentaires quelques red�finitions :
    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
     
    typedef int32_t BOOL;
    typedef uint8_t BYTE;
    typedef uint16_t WORD;
    typedef uint32_t DWORD;
    typedef int32_t LONG;
     
    typedef struct tagRGBQUAD {
    #if FREEIMAGE_COLORORDER == FREEIMAGE_COLORORDER_BGR
      BYTE rgbBlue;
      BYTE rgbGreen;
      BYTE rgbRed;
    #else
      BYTE rgbRed;
      BYTE rgbGreen;
      BYTE rgbBlue;
    #endif // FREEIMAGE_COLORORDER
      BYTE rgbReserved;
    } RGBQUAD;
     
    typedef struct tagRGBTRIPLE {
    #if FREEIMAGE_COLORORDER == FREEIMAGE_COLORORDER_BGR
      BYTE rgbtBlue;
      BYTE rgbtGreen;
      BYTE rgbtRed;
    #else
      BYTE rgbtRed;
      BYTE rgbtGreen;
      BYTE rgbtBlue;
    #endif // FREEIMAGE_COLORORDER
    } RGBTRIPLE;
     
    typedef struct tagBITMAPINFOHEADER{
      DWORD biSize;
      LONG  biWidth; 
      LONG  biHeight; 
      WORD  biPlanes; 
      WORD  biBitCount;
      DWORD biCompression; 
      DWORD biSizeImage; 
      LONG  biXPelsPerMeter; 
      LONG  biYPelsPerMeter; 
      DWORD biClrUsed; 
      DWORD biClrImportant;
    } BITMAPINFOHEADER, *PBITMAPINFOHEADER; 
     
    typedef struct tagBITMAPINFO { 
      BITMAPINFOHEADER bmiHeader; 
      RGBQUAD          bmiColors[1];
    } BITMAPINFO, *PBITMAPINFO;
    Mais j'utilise cette lib pour la conversion jpeg -> bmp et �criture de l'image bmp sur le disque.
    Pour �crire l'image jpeg, j'utilise les fonctions fopen et fwrite

  10. #10
    Membre exp�riment�
    Inscrit en
    Octobre 2007
    Messages
    285
    D�tails du profil
    Informations personnelles :
    �ge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par d�faut
    Citation Envoy� par sagopa Voir le message
    J'ai l'impression que je me suis mal fait comprendre.
    J'ai effectivement mal compris (Apr�s lecture plus attentive, c'est un peu plus clair...).

    Tr�s sch�matiquement, la cam�ra envoi une page du style :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    <html>
    < des infos divers .../>
     
    <image>DU_CODE_BINAIRE_QUI_REPRESENTE_UN_FICHIER_JPEG</image>
     
    </html>
    Vous r�cup�rer ce code que vous copier dans un fichier monfichier.jpg ?
    Si je me suis encore tromp�,

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par d�faut
    Oui c'est � peu pr�s �a.

    Je re�ois par exemple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    HTTP/1.0 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Expires: Thu, 01 Dec 1994 16:00:00 GMT
    Connection: close
    Content-Type: image/jpeg
    Content-Length: 50098
     
     
    DONNES DE L'IMAGE JPEG AVEC HEADER JPEG de taille 50098 bytes...
    Je re�ois les donn�es ci-dessus dans un buffer (uint8_t * dataRcv)

    Evidemment, avant d'�crire dans un fichier j'enl�ve la partie concernant le header http (gr�ce au 2 sauts de ligne), pour n'avoir que les donn�es concernant l'image jpeg.

    j'ai donc un buffer qui ne contient que l'image (uint8_t * image)

  12. #12
    Membre exp�riment�
    Inscrit en
    Octobre 2007
    Messages
    285
    D�tails du profil
    Informations personnelles :
    �ge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par d�faut
    La cam�ra fonctionnant surement sur un d�riv� UNIX ou linux, n'y a t'il pas dans les donn�es binaires du fichier html un retour � la ligne qui perturberai le bazard sous Windows ???

  13. #13
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par d�faut
    Apr�s r�ception des donn�es de la cam�ra j'ai �cris ces donn�es dans un fichier texte. J'ai une diff�rence entre linux et windows.

    LINUX:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    HTTP/1.0 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Expires: Thu, 01 Dec 1994 16:00:00 GMT
    Connection: close
    Content-Type: multipart/x-mixed-replace; boundary=--myboundary
     
    --myboundary
    Content-Type: image/jpeg
    Content-Length: 50328
     
    ÿØÿà...
    WINDOWS:
    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
    HTTP/1.0 200 OK
     
    Cache-Control: no-cache
     
    Pragma: no-cache
     
    Expires: Thu, 01 Dec 1994 16:00:00 GMT
     
    Connection: close
     
    Content-Type: image/jpeg
     
    Content-Length: 50098
     
     
     
    ÿØÿà...

  14. #14
    Membre exp�riment�
    Inscrit en
    Octobre 2007
    Messages
    285
    D�tails du profil
    Informations personnelles :
    �ge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par d�faut
    Je ne pense que la diff�rence d'ent�te joue, par contre, si il y a une diff�rence de structure dans les datas, l� il peut avoir un probl�me.
    L'id�al serait une comparaison byte � byte des datas, mais pour cela, il faudrait la m�me image, et je ne pense pas que ce soit possible (? A moins de figer l'image stock�e sur la cam�ra ?)

  15. #15
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par d�faut
    Oui tu as raison mais il n'est pas possible d'avoir la m�me image ...

  16. #16
    Invit�(e)
    Invit�(e)
    Par d�faut
    Citation Envoy� par sagopa Voir le message
    Oui tu as raison mais il n'est pas possible d'avoir la m�me image ...
    As tu acces � la cam�ra ?
    Est il possible de la sur-exposer, ou de jouer sur son gain pour avoir une image uniformement blanche ? (saturation)

    Si tu as deux images satur�es, il est tout � fait concevable quelles soient identiques.

  17. #17
    Expert confirm�

    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    4 253
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par d�faut
    Faut arr�ter....
    Une requete HTTP est une requete HTTP... si c'est la m�me requ�te qui est envoy�e au m�me serveur, c'est la m�me r�ponse qui est re�u (en tout cas dans le forme), le serveur �tant incapable de detecter si cela vient de Windows ou de Linux ou d'un Sun-Spark ! Hors l� ce n'est pas le cas....

    J'aimerai bien jeter un oeil au code de la query HTTP (en particulier les 'accept' qui sont pass�s) et du d�cryptage de la r�ponse.... (avec �criture dans le fichier texte)

    Juste histoire de voir plus clair dans cette partie...

    Pour le contenu de l'image JPEG... dans tous les cas c'est du binaire, et ca ne devrait poser aucun probl�me

  18. #18
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par d�faut
    Je ne sais pas s'il est possible d'avoir des images satur�es ; je vais me renseigner.

    Voici la requete envoy�e � la camera:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    GET /axis-cgi/jpg/image.cgi?resolution=640x480 HTTP/1.1
    Host: 172.23.7.28
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
    Maintenant je vais essayer de d�tailler un peu plus la s�paration header http et donn�es binaires de l'image:
    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
     
    //J'envoie la requete avec sa taille en octets
    Send(requete, taille requete);
    //Je recupère tout d'abord 1024 octets de la socket
    //1024 est choisi arbitrairement, mais suffisamment grand pour avoir le header http en entier
    Receive(dataRcv, 1024)
    //Recherche une occurence de "Content-Length: "
    uint8_t* content = (uint8_t *) strstr((char*) dataRcv, "Content-Length: ");
    //Recherche de la fin du header http
    uint8_t* endHeader = (uint8_t *) strstr((char*) content , "\r\n\r\n");
    *endHeader = 0x00;
    //Recupere la valeur de "Content-Length: ", cad la taille de l'image, dans imageSize
    sizeLength = STRLEN(content +16);
    length = (uint8_t *) MALLOC( sizeof(uint8_t) * sizeLength + 1 );
    memcpy(length, content+16, sizeLength);
    length[sizeLength] = 0;
    imageSize = atoi((char*) length);
    free(length);
    //Allocation memoire pour le buffer qui va contenir l'image
    uint8_t* downloadedImage = (uint8_t*) malloc( imageSize );
    //On Recupere la taille du header 
    sizeHeader = STRLEN(dataRcv) + 4;
    //Je copie la premiere partie de l'image, recuperée avec le header http, dans le buffer
    memcpy(downloadedImage, endHeader+4, 1024 - sizeHeader);
    //On definit la nouvelle taille (en octects tjs) à recevoir 
    sizeDataRcv = imageSize  - (PACKET_SIZE - sizeHeader);
    free(dataRcv);
    //On récupère la dernière partie de la réponse http qui correspond à la dernière partie de l'image
    Receive(dataRcv,sizeDataRcv );
    //Je copie la dernière partie dans le buffer
    memcpy(downloadedImage+(1024-sizeHeader), dataRcv, sizeDataRcv);
    free(dataRcv);
    //Enfin je copie l'image sur le disque pour vérifier si l'image a été récuperée correctement ou non
    FILE * bulk;
    if ( ( bulk = fopen("image.jpg", "wb") ) == NULL ) 
      cout << "Can't open file to write image.jpg" << endl;
    else
    {
      fwrite(downloadedImage, 1 , imageSize , bulk);
      fclose(bulk);
    }
    J'esp�re que c'est assez clair...
    Merci.

  19. #19
    Membre exp�riment�
    Inscrit en
    Octobre 2007
    Messages
    285
    D�tails du profil
    Informations personnelles :
    �ge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par d�faut
    Citation Envoy� par nicroman Voir le message
    Faut arr�ter....
    Une requete HTTP est une requete HTTP... si c'est la m�me requ�te qui est envoy�e au m�me serveur, c'est la m�me r�ponse qui est re�u (en tout cas dans le forme), le serveur �tant incapable de detecter si cela vient de Windows ou de Linux ou d'un Sun-Spark ! Hors l� ce n'est pas le cas....
    Je suis partiellement d'accord, tout d�pend le protocole cam�ra / PC qui pourrait varier suivant que cot� PC, les fonctions sont du type WIN32 ou Linux

    Citation Envoy� par nicroman Voir le message
    J'aimerai bien jeter un oeil au code de la query HTTP (en particulier les 'accept' qui sont pass�s) et du d�cryptage de la r�ponse.... (avec �criture dans le fichier texte)

    Juste histoire de voir plus clair dans cette partie...
    Ca ferait avancer le probl�me...

    Citation Envoy� par nicroman Voir le message
    Pour le contenu de l'image JPEG... dans tous les cas c'est du binaire, et ca ne devrait poser aucun probl�me
    Oui le binaire, c'est le binaire. Mais comme dans le premier cas, la cam�ra pourrait se comporter diff�remment dans le formattage de ces donn�es suivant les informations envoy�e par le client.
    Deuxi�mement, si dans le fichier HTML, il y des retour � la ligne ou autre (qui d�pendent de l'os) cela peut expliquer le probl�me.
    Enfin, attention � la mani�re de lire le binaire (Big endian / little endian) ...

    Les raisons peuvent vraiment �tre vari�e.

    Je pense qu'une lecture attentive de la doc cam�ra devrait peut �tre aider (lire les petits * ou 1 2... en bas de page)


    Enfin pour l'id�e d'une image blanche (ou noir d'ailleurs qui serait plus simple � obtenir), je ne suis pas s�r qu'on obtienne exactement le m�me code binaire du fichier JPEG, mais bon � essayer.

  20. #20
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par d�faut Probl�me r�solu
    J'ai enfin trouv� le probl�me:

    En faite lorsque je faisais un receive pour lire les donn�es de l'image de la socket, sur windows il n'est pas possible de lire tout l'image en entier, certainement du � une taille de buffer des sockets trop petite par rapport � la taille d'une image jpeg. Donc tant que je n'ai pas lu l'image en entier je fais de nouveau un receive pour avoir l'image en entier.

    Merci encore � tous.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. [SGBD] affichage d'image jpeg depuis une base mysql
    Par eric_300 dans le forum Requ�tes
    R�ponses: 2
    Dernier message: 10/09/2005, 12h27
  2. [DBase][BDE]Ins�rer des images JPeg dans un table.u
    Par migauvin dans le forum Bases de donn�es
    R�ponses: 3
    Dernier message: 24/08/2004, 12h03
  3. Compression d'une s�rie d'images jpeg
    Par Tchello dans le forum Langage
    R�ponses: 3
    Dernier message: 31/08/2003, 19h59
  4. Copier une image (jpeg) dans le presse papier
    Par benj63 dans le forum C++Builder
    R�ponses: 2
    Dernier message: 29/07/2002, 14h51
  5. comment r�duire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    R�ponses: 4
    Dernier message: 14/07/2002, 20h06

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