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 :

creation et manipulation d'images


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut creation et manipulation d'images
    Bonjour tout le monde,

    j'ai ecrit des fonctions sur la manipulation d'image (.pgm)que je dois tester et je ne sais pas comment faire.
    1-Je doit charger une photo et l'afficher,
    2-en faire une copie
    3-sauvegarder la copie dans un fichier texte.

    Structure image_t:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct
    	{
    	unsigned long nx;
    	unsigned long ny;
    	unsigned long nb_ng;
    	unsigned char *buff;
    	} image_t;
    fonction de creation de l'image et de copie 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
    image_t *creer_image(){
    	image_t * img1;
     
    	img1 = (image_t*)malloc(sizeof(image_t));
    	img1->nx=0;
    	img1->ny=0;
    	img1->nb_ng=0;
    	img1->buff=NULL;
     
    	return img1;
     }
    image_t *copier_image(image_t *src){
    	image_t *dest;	
    	dest=creer_image();
    	dest->nx=src->nx;
    	dest->ny=src->ny;
    	dest->nb_ng=src->nb_ng;
    	dest->buff=(unsigned char*)malloc(src->nx*src->ny*sizeof(unsigned char));
    	memcpy(dest->buff,src->buff,src->nx*src->ny*sizeof(unsigned char));
     
    	return dest;
    }
    fonction pour sauvegarder l'image dans un fichier texte.
    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
    int sauver_image_pgm(char *nom_fichier, image_t *img){
     
    	FILE *fic;
     
    	fic=fopen(nom_fichier,"w");
    	if(fic==NULL){
    	    fprintf(stderr,"impossible d'ouvrir le fichier");
    	    return 0;
    	}
    	fprintf(fic,"P5\n");
    	fprintf(fic,"%d %d\n",img->nx,img->ny);
    	fprintf(fic,"%d\n",img->nb_ng);
     
    	fwrite(img->buff,img->nx,img->ny*sizeof(unsigned char),fic);
    	fclose(fic);
     
    	return 1;
    }
    Donc mon probleme est que je ne sais pas ce que je dois mettre dans la fonction main pour tester toute ces fonctions.


    Merci

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

    Une première approche est d'appeler les fonctions les unes après les autres en vérifiant que tout fonctionne :

    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
    51
    52
    53
    54
    55
    56
     
    #include <stdlib.h>
    #include <stdio.h>
    /* ton header */
    #include "image.h"
    int main(void)
    {
        int err;
        image_t *image;
     
        /* TEST creer_image */
        printf("1- creer_image ");
        image = creer_image();
        if (NULL == image) {
            printf("BAD\n");
            exit(EXIT_FAILURE);
        } else {
            printf("OK\n");
        }
     
        /* Remplissage de l'image créée */
        image->nx = 128;
        image->ny = 128;
        image->nb_ng = 256;
     
        image->buff = calloc(image->nx * image->ny, sizeof *image->buff);
     
        if (NULL == image->buff) {
            perror("calloc");
            exit(EXIT_FAILURE);
        }
     
        {
            size_t i, j, k;
            for (k = i = 0; i < image->nx; ++i) {
                for (j = 0; j < image->ny; ++j, ++k) {
                    image->buff[k] = i + j;
                }
            }
        }
     
        /* TEST sauver_image_pgm */
        printf("2- sauver_image_pgm ");
     
        err = sauver_image_pgm("test.pgm", image);
     
        if (0 == err) {
            printf("BAD\n");
        } else {
            printf("OK\n");
        }
     
        /* Et ainsi de suite ... */
     
        return EXIT_SUCCESS;
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    Bonjour,

    Merci Mabu j'ai pu tester mes fonctions grace a tes indications.
    J'ai écrit une fonction qui doit lire un fichier (.pgm) et allouer une nouvelle image a partir de la lecture de ce fichier.
    A l'execution j'ai une "erreur de segmentation".
    J'ai du mal avec les fonctions de lecture de fichier.

    voici le code de ma fonction, quelques conseils seraient bienvenue.

    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
    image_t *charger_image_pgm(char *nom_fichier){
     
    	FILE *fic;
    	image_t *img;
    	char buff[TAILLE_BUFF];
    	int i;
    	fic=fopen(nom_fichier,"r");
    	if(fic==NULL){
    	    fprintf(stderr,"impossible d'ouvrir le fichier");
    	    return 0;
    	}
    	fgets(buff,TAILLE_BUFF,fic);
     
    	fread(img->buff,img->nx,img->ny*sizeof(unsigned char),fic);
     
    	fclose(fic);
    	return img;
    }
    Merci

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    image_t *charger_image_pgm(char *nom_fichier){
    	FILE *fic;
    	image_t *img;
    ....
    	fread(img->buff,img->nx,img->ny*sizeof(unsigned char),fic);
    ....
    Tu as créé un pointeur non initialisé img. Il pointe dans les décors et dès que tu veux l'utiliser, cela plante.
    Créer un pointeur ne crée PAS l'objet pointé. Il faut que tu crées un image_t convenable et mettre son adresse dans img.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    merci Diogene j'ai corrigé mon erreur grace a tes conseils.

    Maintenant j'essaie de charger une photo, d'en faire une copie et de sauvegarder cette copie, le probleme c'est que les fichiers ne sont pas identiques la copie est une image toute blanche. voici mes codes:

    pour copier 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
    image_t *copier_image(image_t *src){
    	image_t *dest;	
            dest=creer_image();
     
    	dest->nx=src->nx;
    	dest->ny=src->ny;
    	dest->nb_ng=src->nb_ng;
     
    	dest->buff=(unsigned char*)malloc(src->nx*src->ny*sizeof(unsigned char));
     
    	memcpy(dest->buff,src->buff,src->nx*src->ny*sizeof(unsigned char));
     
    	return dest;
    }
    Pour sauver l'image dans un fichier:

    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
    int sauver_image_pgm(char *nom_fichier, image_t *img){
     
    	FILE *fic;
     
    	fic=fopen(nom_fichier,"w");
    	if(fic==NULL){
    	    fprintf(stderr,"impossible d'ouvrir le fichier");
    	    return 0;
    	}
     
            fwrite(img->buff,img->nx,img->ny*sizeof(unsigned char),fic);
    	fclose(fic);
     
    	return 1;
    }
    Pour lire l'image a partir du fichier fourni en argument:

    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
    image_t *charger_image_pgm(char *nom_fichier){
     
    	FILE *fic;
    	image_t *img;
    	char buff[TAILLE_BUFF];
     
    	fic=fopen(nom_fichier,"r");
    	if(fic==NULL){
    	    fprintf(stderr,"impossible d'ouvrir le fichier");
    	    return 0;
    	}
     
    	img=creer_image();
     
    	fgets(buff,TAILLE_BUFF,fic);
     
    	fread(img->buff,img->nx,img->ny*sizeof(unsigned char),fic);
     
    	fclose(fic);
    	return img;
    }
    La fonction de test main:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int main()
    	{
           image_t *charge_img;	
           image_t *copy1;
           int copy2;
     
           charge_img=charger_image_pgm("quest.pgm");
           copy1=copier_image(charge_img);
     
           copy2=sauver_image_pgm("quest2.pgm",copy1);
     
            return EXIT_SUCCESS;
     
    }
    A la fin de l'execution j'ai mon image quest.pgm qui est normale et quest2.pgm qui est toute blanche. Est ce que c'est normale? Comment avoir des copies identiques?

    Merci

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Il y a une différence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    image_t *charger_image_pgm(char *nom_fichier){
     
    	FILE *fic;
    	image_t *img;
    	char buff[TAILLE_BUFF];
    ....
     
    	fgets(buff,TAILLE_BUFF,fic);
    Tu lis une ligne (fgets) que tu ne vas pas recopier puisqu'elle est tout simplement ignorée (le contenu de buff n'est pas utilisé)
    Je ne connais pas le format d'un tel fichier, mais il est étonnant qu'il commence par une ligne de TEXTE. Si c'est néammoins le cas, il faut bien, en recopie, mettre la ligne de texte adéquate.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    bonjour

    Je n'arrive toujours pas a avoir une copie de mon image, j'ai modifié ma fonction d'ecriture, car le format de fichier .pgm contient un en-tete de type texte ASCII avec 3 lignes.
    Et malgré cette ajout je n'obtient pas de copie de mon image.
    Est-ce que mes fonctions de lecture et d'ecriture de fichier son bien écrit?

    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
    int sauver_image_pgm(char *nom_fichier, image_t *img){
     
    	FILE *fic;
     
    	fic=fopen(nom_fichier,"w");
    	if(fic==NULL){
    	    fprintf(stderr,"impossible d'ouvrir le fichier");
    	    return 0;
    	} 
            //en tête de mon fichier
    	fprintf(fic,"P5\n");                                         
    	fprintf(fic,"%d %d\n",img->nx,img->ny);
    	fprintf(fic,"%d\n",img->nb_ng);
     
    	fwrite(img->buff,img->nx,img->ny*sizeof(unsigned char),fic);
    	fclose(fic);
     
    	return 1;
    }
    Merci

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    Je n'arrive toujours pas a faire une copie d'image, quelqu'un pour m'aider, please?

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
           copy2=sauver_image_pgm("quest2.pgm",copy1);
    ne correspond pas à ta déclration de ta fonction :

    copy1 est un entier, pas un pointeur sur l'image...

  10. #10
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Il y a une incohérence entre lecture et écriture :

    La lecture se fait par fgets, l'écriture par fwrite... il risque d'y avoir des problèmes avec les fins de lignes, les caractères spéciaux...

    La logique voudrait que si l'écriture se fait avec fwrite, la lecture se fait avec fread...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    salut

    Merci pour les réponses, j'ai modifié mon code pour lire mon fichier avec la fonction fread, le probleme de copie persiste, ma copie est toujours une image blanche.

    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
    image_t *charger_image_pgm(char *nom_fichier){
     
    	FILE *fic;
    	image_t *img;
    	unsigned long nx,ny,nb_ng;
     
    	fic=fopen(nom_fichier,"r");
    	if(fic == NULL){
    	    fprintf(stderr, "impossible d'ouvrir le fichier" );
    	    return 0;
    	}
     
    	fscanf(fic, "%d %d\n", &nx, &ny);
    	fscanf(fic, "%d\n", &nb_ng);
     
    	img = creer_image();
    	img->nx = nx;
    	img->ny = ny;
    	img->nb_ng = nb_ng;
    	img->buff = malloc(img->nx *i mg->ny * sizeof(unsigned char));
     
    	fread(img->buff, img->nx, img->ny * sizeof(unsigned char),fic);
     
    	fclose(fic);
    	return img;
    }
    Dans ma fonction main toute mes variables sont bien déclarer il me semble, je ne comprend pas l'indication de souviron34, je voudrais quelque précisions.
    Merci

  12. #12
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    La lecture et l'écriture ne sont toujours pas cohérentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Et la lecture du tag P2/P5 ?????
       fscanf(fic, "%d %d\n", &nx, &ny);
       fscanf(fic, "%d\n", &nb_ng);
       fread(img->buff, img->nx, img->ny * sizeof(unsigned char),fic);
    .....
       fprintf(fic,"P5\n");                                       
       fprintf(fic,"%d %d\n",img->nx,img->ny);
       fprintf(fic,"%d\n",img->nb_ng);
       fwrite(img->buff,img->nx,img->ny*sizeof(unsigned char),fic);
    La première chose à faire est de vérifier si les données nx, ny, nb_ng sont correctement lues.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    Et comment vérifier que les données "P5", nx, ny, nb_ng sont correctement lues?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
       fscanf(fic,"P5\n");
       fscanf(fic, "%d %d\n", &nx, &ny);
       fscanf(fic, "%d\n", &nb_ng);
       fread(img->buff, img->nx, img->ny * sizeof(unsigned char)

  14. #14
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Et comment vérifier que les données "P5", nx, ny, nb_ng sont correctement lues?
    - Avec un debugger, qui est un instrument absolument utile et instructif. Si ton environnement de développement n'en possède pas, il faut en changer. Sinon, il est essentiel d'apprendre à (et de s'en) servir. Ce n'est pas du temps perdu

    - Ou en affichant par un printf les valeurs lues dans le fichier pour voir si elles sont conformes à ce que tu attends.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    - Ou en affichant par un printf les valeurs lues dans le fichier pour voir si elles sont conformes à ce que tu attends.
    comment faire, je fais cette verification dans la fonction ou dans le main?peut tu m'indiquer la syntaxe s'il te plait?est ce que c'est a cause de la vérification que je n'arrive pas a copier mon image?

  16. #16
    Invité(e)
    Invité(e)
    Par défaut
    comment faire, je fais cette verification dans la fonction ou dans le main?peut tu m'indiquer la syntaxe s'il te plait?est ce que c'est a cause de la vérification que je n'arrive pas a copier mon image?
    printf est la manière la plu simple de procéder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    printf("largeur : %d\n", nx);
    printf("hauteur : %d\n", ny);
    printf("nombre de gris : %d\n", nb_ng);

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    Salut

    Avec printf à l'execution, j 'ai bien les valeurs lues dans le fichier, elle correspondent, mais ma copie est toujours une image blanche. Voici les modif de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            fscanf(fic,"P5\n");
    	fscanf(fic,"%d %d\n",&nx, &ny);
    	fscanf(fic,"%d\n",&nb_ng);
     
            printf("largeur :%d\n", nx);
    	printf("longueur :%d\n", ny);
    	printf("hauteur :%d\n", nb_ng);
    Je suis débutant en C, ca fait plusieur jour que je cherche la solution au probleme et je remercie tous ceux qui m'ont aidé mais je n'est pas l'impression de progresser. Est- ce que quelqu'un peu regarder mon code, me dire ce qui ne marche pas et me donner les conseils necessaire pour finir mon programme.
    Avec toute ma gratitude.

    Merci

  18. #18
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Tu ne lis pas tout le fichier. le fread lit nx*ny char. Or d'après ce que j'ai lu sur ce format ici :

    - Width * height gray values, each in ASCII decimal, between
    0 and the specified maximum value, separated by whi-
    tespace
    ,...
    Ce qui ne fait pas nx*ny char
    - à cause du fait que la valeur est en ASCII, pas en binaire
    - à cause des caractères blancs séparant chaque valeur

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    Ce qui ne fait pas nx*ny char
    - à cause du fait que la valeur est en ASCII, pas en binaire
    - à cause des caractères blancs séparant chaque valeur
    Alors comment je fais pour lire mon fichier image? Peut tu me donner la syntaxe ou la fonction qui me permettrai de lire mon fichier?

  20. #20
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Je pense qu'il faut abandonner le fread, puisqu'on ne sait pas combien de bytes doivent être lus, pour une lecture formattée (fscanf) de nx*ny valeurs.
    Pour l'écriture, écrire les nx*ny valeurs (séparées par un blanc) par fprintf

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

Discussions similaires

  1. Manipulation d'images
    Par Tragnee dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 08/04/2006, 18h59
  2. [VBA-E]Manipuler des images
    Par nils.angot dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/02/2006, 11h59
  3. [SWING] Manipulation d'images
    Par TylerKnoxx dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 13/09/2005, 23h33
  4. [SDL] manipulation d'image
    Par zdra dans le forum OpenGL
    Réponses: 4
    Dernier message: 28/02/2004, 17h56

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