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

2D Java Discussion :

Histogramme Bilineaire d'une image


Sujet :

2D Java

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut Histogramme Bilineaire d'une image
    Bonjour,

    enfaite j'essaye de faire un sorte d'histogramme de deux images voilà le code que j'utilise enfaite je suis bloquée, normalement il faut colorier cette grille par rapport aux valeurs du pixel des 2 images. On prend les 2 images et on les fusionnes on prends les 5 bits du points fort de chacune et la nouvelle valeur sera dans la même position précédente
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.awt.image.Raster;
     
    import java.io.File;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
    import javax.swing.*;
     
    import java.util.*;
     
     
       public class Histogrammebilineaire extends JPanel
       {
     
       BufferedImage monImage;
       BufferedImage monImage2;
           //public Histogrammebilineaire(){
     
        /*     try {
                   File input = new File("d:/bordd.JPG");
                   File input2 = new File("d:/bor.JPG");
                   monImage = ImageIO.read(input);
                   monImage2 = ImageIO.read(input);
                    
             
                   int max=0;
                   int nbpts=0;
                   int M=1;
           for (int i = 0; i < monImage.getHeight() ; i++) {
                  for (int j = 0 ; j < monImage.getWidth() ; j++) {
                    
                     for (int k = 0; k < monImage2.getHeight(); k++) {
                      for (int l = 0; l <monImage2.getWidth(); l++) {
                       int pixel = monImage.getRGB(j + k, i + l);
                       int gray = (pixel >> 16) & 0xff;
                        
                   if (max<M){
                       max=M;
                       nbpts++;
                   }
                        
                      }}}}      
       
               } catch (Exception e) {
           e.printStackTrace();
          }
         } */
     
          public static void Fenetre()
          {
     
             JFrame fenetre = new JFrame();
             fenetre.setSize(273, 295);
             fenetre.setTitle("Histogramme Bilinéaire");
             JPanel panneau = new Histogrammebilineaire();
             panneau.setBackground(Color.WHITE);
             fenetre.add(panneau);
             fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             fenetre.setVisible(true);
          }
     
          @Override
          public void paintComponent(Graphics g)
          {
              File input = new File("d:/bordd.JPG");
              File input2 = new File("d:/test.bmp");
     
     
              try {
                monImage = ImageIO.read(input);
                 monImage2 = ImageIO.read(input2);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
     
             super.paintComponent(g);
             int larg = getWidth();
             int haut = getHeight();
     
     
             int dim = 8; //dimension d'une case de la grille
     
             // La grille:
             for(int i = 0; i < dim*33; i +=dim)
             {
                g.drawLine(i,0,i, haut); // Les lignes verticales de la grille
                g.drawLine(0,i,larg, i); // Les lignes horizontales de la grille
               // System.out.println(i);
             }
     
             for(int j = 0; j < dim*32; j +=dim)
             { 
     
             // Remplir les cases:
                for(int i = 0; i < dim*32; i +=dim)
                {
     
                     for ( i = 0; i < monImage.getHeight() ; i++) {
                      for ( j = 0 ; j < monImage.getWidth() ; j++) {
     
                          for (int k = 0; k < monImage2.getHeight(); k++) {
                          for (int l = 0; l <monImage2.getWidth(); l++) {
     
                        int pixel = monImage.getRGB(j , i );
                        int pixel2= monImage2.getRGB(k , l);
                       int gray = (pixel >> 16) & 0xff;
                      int gray2 = (pixel2 >> 16) & 0xff;
     
                   g.setColor(Color.blue);   // couleur de remplissage
                   g.fillRect(gray, gray2, 8, 8); // remplissage (fill)
                   g.setColor(Color.green);  // couleur du panel
                }
             } }
     
                     }}}
     
     
          }
     
          public static void main (String [] arg)
          {
             Fenetre();
          }
       }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    int gray = (pixel >> 16) & 0xff; récupère la composant rouge de la couleur du pixel, pas les 5 bits de poids fort (cela dit ça n'aurait pas grand sens de prendre les 5 bits de poids fort, puisqu'il s'agirait de la composante alpha).

    Ensuite, pour affecter la couleur pour dessiner, il te faut convertir la valeur en couleur. De ce que je comprends, il te faut un niveau de gris, donc tu peux faire ça par g.setColor(new Color(valeur, valeur, valeur)) (affecter la même valeur pour les composantes rouge, verte et bleue). Il te faut donc une règle de combinaison des deux composantes gray et gray2 : la moyenne peut-être ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut
    Enfaite il me faut prendre 5 bits de poid fort de chaque image ! pouvez vous svp m'aider je suis vraiment bloquée et debutante

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ce n'est certainement pas les 5 bits de poids fort de chaque image, mais les 5 bits de poids fort de chaque couleur de chaque pixel, non ?

    Ensuite, je viens de te répondre à ce sujet. Pour les combiner, tu peux faire la moyenne donc, par exemple comme ça :
    [code]int valeur = (gray+gray2)>>1;[code]

    En revanche, pour dessiner le point correspondant, ce n'est pas gray et gray2 à priori les coordonnées, ou si ? Soit il s'agit de coordonnées correspondant aux pixels d'origine, et c'est quelque chose qui dépend de i et j (comme tu dessines un rectangle de 8x8, à priori ça serait g.fillRect(i*8, j*8, 8, 8);.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut
    Merci beaucoup pour votre retour, alors j'ai essayé ce que vous m'avez dis mais ça marche pas la grille devient toute blanche et me donne une erreur de outside parametre
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    package STAGE;
     
       public class Histogrammebilineaire extends JPanel 
       { 
     
       BufferedImage monImage;
       BufferedImage monImage2;
    	   //public Histogrammebilineaire(){
     
    	/*	   try {
    			   File input = new File("d:/bordd.JPG");
    			   File input2 = new File("d:/bor.JPG");
    			   monImage = ImageIO.read(input);
    			   monImage2 = ImageIO.read(input);
     
     
    			   int max=0;
    			   int nbpts=0;
    			   int M=1;
    	   for (int i = 0; i < monImage.getHeight() ; i++) {
    			  for (int j = 0 ; j < monImage.getWidth() ; j++) {
     
    			     for (int k = 0; k < monImage2.getHeight(); k++) {
    			      for (int l = 0; l <monImage2.getWidth(); l++) {
    			       int pixel = monImage.getRGB(j + k, i + l);
    			       int gray = (pixel >> 16) & 0xff;
     
    			   if (max<M){
    				   max=M;
    				   nbpts++;
    			   }
     
    			      }}}}	     
      
    		   } catch (Exception e) {
    	   e.printStackTrace();
    	  }
    	 } */
     
          public static void Fenetre()
          { 
     
             JFrame fenetre = new JFrame(); 
             fenetre.setSize(273, 295); 
             fenetre.setTitle("Histogramme Bilinéaire"); 
             JPanel panneau = new Histogrammebilineaire(); 
             panneau.setBackground(Color.WHITE); 
             fenetre.add(panneau); 
             fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
             fenetre.setVisible(true); 
          } 
     
          @Override 
          public void paintComponent(Graphics g)
          { 
        	  File input = new File("d:/courbure.jpg");
        	  File input2 = new File("d:/test.bmp");
     
     
        	  try {
    			monImage = ImageIO.read(input);
    			 monImage2 = ImageIO.read(input2);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
             super.paintComponent(g); 
             int larg = getWidth(); 
             int haut = getHeight();
     
     
             int dim = 8; //dimension d'une case de la grille
     
             // La grille:
             for(int i = 0; i < dim*33; i +=dim)
             {
                g.drawLine(i,0,i, haut); // Les lignes verticales de la grille
                g.drawLine(0,i,larg, i); // Les lignes horizontales de la grille
               // System.out.println(i);
             }
     
             for(int j = 0; j < dim*32; j +=dim)
             {	
     
             // Remplir les cases:
                for(int i = 0; i < dim*32; i +=dim)
                {
                	 for ( i = 0; i < monImage.getHeight() ; i++) {
           			  for ( j = 0 ; j < monImage.getWidth() ; j++) {
     
     
     
           				for (i = 0; i < monImage2.getHeight(); i++) {
           			    for (j = 0; j <monImage2.getWidth(); j++) {
           				int pixel = monImage.getRGB(j , i );
           					int gray = (pixel >> 16) ;
           			    	int pixel2= monImage2.getRGB(j, i);
           				     int gray2 = (pixel2 >> 16) ;
           				  int valeur = (gray+gray2)>>1;
           				  g.setColor(new Color(valeur, valeur, valeur));
     
                   g.setColor(Color.blue);   // couleur de remplissage
                   g.fillRect(i*8, j*8, 8, 8); // remplissage (fill)
                   g.setColor(Color.green);  // couleur du panel
                }
             } }
     
                	 }}}
     
     
          }
     
          public static void main (String [] arg)
          { 
             Fenetre();
          }
       }

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu as supprimé de ton code le & 0xFF, du coup les valeurs des composantes rouges peuvent être hors scope en effet.

    Mais tu ne m'a pas répondu sur l'histoire du 5 bits de poids fort ! int gray = (pixel >> 16) & 0xFF; ne donne pas les 5 bits de poids fort, mais les 8 bits de 17 à 24.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut
    Oui enfaite 5 bits de poid fort du pixel ! Comment peux-je l'exprimer svp ?

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui, enfin, je suppose donc les 5 bits de poids fort de la composante rouge donc (sinon ça prend la composante alpha = 8 bits de poids fort).

    Pour récupérer les 5 bits de poids fort, il te suffit de modifier le décalage : tu décales de 16 bits pour obtenir les 16 bits de poids fort (et le & 0xFF permet d'en obtenir que les 8 bits de poids faible). Il te sufft donc de décaler de 3 bits de plus pour obtenir que les 5 bits de poids fort (de la composante rouge donc) : ((pixel>>16) & 0xFF)>>3. Du coup, ce n'est pas forcément la peine de prendre la moyenne des deux : tu peux faire simplement la somme, ça tiendra dans 6 bits, donc dans 8.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut
    J'ai essayé mais rien ça donne toujours le même resultat !!! la grille toute 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
    27
     for(int j = 0; j < dim*32; j +=dim)
             {	
     
             // Remplir les cases:
                for(int i = 0; i < dim*32; i +=dim)
                {
                	 for ( i = 0; i < monImage.getHeight() ; i++) {
           			  for ( j = 0 ; j < monImage.getWidth() ; j++) {
     
     
     
           				for (i = 0; i < monImage2.getHeight(); i++) {
           			    for (j = 0; j <monImage2.getWidth(); j++) {
           				int pixel = monImage.getRGB(j , i );
           					 int gray = (pixel>>19)& 0xFF  ;
           			    	 int pixel2= monImage2.getRGB(j, i);
           				     int gray2 = (pixel2>>19)& 0xFF ;
           				     int valeur = (gray+gray2)>>1;
                			g.setColor(new Color(valeur, valeur, valeur));
     
     
                   g.setColor(Color.blue);   // couleur de remplissage
                   g.fillRect(i*8, j*8, 8, 8); // remplissage (fill)
                  g.setColor(Color.green);  // couleur du panel
     
                }
             } }

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Applique ce que j'écris !

    Et enlève g.setColor(Color.blue); // couleur de remplissage|. D'ailleurs ça m'étonne que l'image soit toute blanche, elle devrait être toute bleue
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut
    Désolé mais rien
    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
         for(int j = 0; j < dim*32; j +=dim)
             {	
     
             // Remplir les cases:
                for(int i = 0; i < dim*32; i +=dim)
                {
                	 for ( i = 0; i < monImage.getHeight() ; i++) {
           			  for ( j = 0 ; j < monImage.getWidth() ; j++) {
     
     
     
           				for (i = 0; i < monImage2.getHeight(); i++) {
           			    for (j = 0; j <monImage2.getWidth(); j++) {
           				int pixel = monImage.getRGB(j , i );
           					 int gray = ((pixel>>16) & 0xFF)>>3  ;
           			    	 int pixel2= monImage2.getRGB(j, i);
           				     int gray2 = ((pixel2>>16) & 0xFF)>>3 ;
           				     int valeur = (gray+gray2);
                			g.setColor(new Color(valeur, valeur, valeur));
     
     
     
                   g.fillRect(i*8, j*8, 8, 8); // remplissage (fill)
                  g.setColor(Color.green);  // couleur du panel
     
                }
             } }

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Autant pour moi, je n'avais pas regardé tout ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int i = 0; i < dim*32; i +=dim)
                {
                	 for ( i = 0; i < monImage.getHeight() ; i++) {
           			  for ( j = 0 ; j < monImage.getWidth() ; j++) {
     
     
     
           				for (i = 0; i < monImage2.getHeight(); i++) {
           			    for (j = 0; j <monImage2.getWidth(); j++) {
    C'est n'importe quoi ça : ton parcours est complètement faux. Déjà il faut que les deux images aient la même taille, sinon il faut prendre par exemple la largeur la plus petite des deux, et la hauteur la plus petite des deux. Ensuite, ne faire qu'une seule boucle i et une seule boucle j. Récupérer les points dans les deux images, avec les mêmes i et j (même position dans les deux images).
    Ensuite, dessiner la grille, avec la boucle for(int i = 0; i < dim*32; i +=dim), par dessus donc.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut
    Une seul boucle pour parcourir les 2 images ? Comment faire ça ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ( int i = 0; i < monImage.getHeight() ; i++) {

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tout simplement comme ça :

    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 largeurImage = Math.min(monImage.getWidth(), monImage2.getWidth());
    int hauteurImage = Math.min(monImage.getHeight(), monImage2.getHeight());
    for (int i = 0; i < largeurImage; i++) {
       for (int j = 0; j < hauteurImage; j++) {
     
          int pixel = monImage.getRGB(i, j);
          int gray = ((pixel >> 16) & 0xFF) >> 3;
     
          int pixel2 = monImage2.getRGB(i, j);
          int gray2 = ((pixel2 >> 16) & 0xFF) >> 3;
     
          int valeur = (gray + gray2);
          g.setColor(new Color(valeur, valeur, valeur));
     
          g.fillRect(i * 8, j * 8, 8, 8); // remplissage (fill)
     
       }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut
    D'accord mais normalement si j'ai compris le code que je fais il supprimer les ligne horizontaux et verticaux enfaite dois-je les dessiner aussi qu'à la fin ? ça m'etonne pas qu'elle est toute blanche si vous regardez bien le code le background de la panel est blanc.
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
     
       public class Histogrammebilineaire extends JPanel 
       { 
     
       BufferedImage monImage;
       BufferedImage monImage2;
     
     
          public static void Fenetre()
          { 
     
             JFrame fenetre = new JFrame(); 
             fenetre.setSize(273, 295); 
             fenetre.setTitle("Histogramme Bilinéaire"); 
             JPanel panneau = new Histogrammebilineaire(); 
             panneau.setBackground(Color.WHITE); 
             fenetre.add(panneau); 
             fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
             fenetre.setVisible(true); 
          } 
     
          @Override 
          public void paintComponent(Graphics g)
          { 
        	  File input = new File("d:/courbure.jpg");
        	  File input2 = new File("d:/test.bmp");
     
     
        	  try {
    			monImage = ImageIO.read(input);
    			 monImage2 = ImageIO.read(input2);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
             super.paintComponent(g); 
             int larg = getWidth(); 
             int haut = getHeight();
     
     
             int dim = 8; //dimension d'une case de la grille
     
        		for(int i = 0; i < dim*33; i +=dim)
        		         {
        		            g.drawLine(i,0,i, haut); // Les lignes verticales de la grille
        		            g.drawLine(0,i,larg, i); // Les lignes horizontales de la grille
     
        		         }	
             int largeurImage = Math.min(monImage.getWidth(), monImage2.getWidth());
             int hauteurImage = Math.min(monImage.getHeight(), monImage2.getHeight());
             for (int i = 0; i < largeurImage; i++) {
                for (int j = 0; j < hauteurImage; j++) {
     
                   int pixel = monImage.getRGB(i, j);
                   int gray = ((pixel >> 16) & 0xFF) >> 3;
     
                   int pixel2 = monImage2.getRGB(i, j);
                   int gray2 = ((pixel2 >> 16) & 0xFF) >> 3;
     
                   int valeur = (gray + gray2);
                  g.setColor(new Color(valeur, valeur, valeur));
     
     
           		  for(  j = 0; j < dim*32; j +=dim) {
           		     for(i = 0; i < dim*32; i +=dim)
           		            {
     
           		    	 g.fillRect(i*8, j*8, 8, 8); // remplissage (fill)
     
     
              }
             } }
           		 }
     
     
          }
     
          public static void main (String [] arg)
          { 
             Fenetre();
          }
       }

  16. #16
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par YOUHANA Voir le message
    D'accord mais normalement si j'ai compris le code que je fais il supprimer les ligne horizontaux et verticaux enfaite dois-je les dessiner aussi qu'à la fin ?
    Oui, c'est ce que j'ai dit : il faut les dessiner après, pour qu'elles soient par-dessus. Sinon, effectivement, la matrice de pixels la recouvre.

    Ensuite, pourquoi avoir ajouter ces boucles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
             		 
           		  for(  j = 0; j < dim*32; j +=dim) {
           		     for(i = 0; i < dim*32; i +=dim)
           		            {
           		  
           		    	 g.fillRect(i*8, j*8, 8, 8); // remplissage (fill)
           		    	 
                   
              }
             }
    [QUOTE=YOUHANA;8683632] ça m'etonne pas qu'elle est toute blanche si vous regardez bien le code le background de la panel est blanc. [/code]
    Dis, tu n'aurais pas par hasard une stacktrace qui s'affiche ? Genre
    [quote]javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(ImageIO.java:1301)
    at Histogrammebilineaire.paintComponent(Histogrammebilineaire.java?)[/code]

    Ce qui arrive quand un fichier image lu n'existe pas...


    Par ailleurs, on ne lit jamais les fichiers dans les méthodes de dessin, mais à part, à la construction par exemple.

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    public class Histogrammebilineaire extends JPanel {
     
    	BufferedImage monImage;
    	BufferedImage monImage2;
     
    	public Histogrammebilineaire() {
                    // !!! Attention à adpater les noms de fichiers !!!
    		File input = new File("C:/Users/Joël/Pictures/suricate.png");
    		File input2 = new File("C:/Users/Joël/Pictures/Google Talk/Alien 1.bmp"); 
    		try {
    			monImage = ImageIO.read(input);
    		} catch (IOException e) { 
    			e.printStackTrace();
    		}
    		try {
    			monImage2 = ImageIO.read(input2);
    		} catch (IOException e) { 
    			e.printStackTrace();
    		} 
    	}
     
    	public static void Fenetre() {
     
    		JFrame fenetre = new JFrame();
    		fenetre.setSize(273, 295);
    		fenetre.setTitle("Histogramme Bilinéaire");
    		JPanel panneau = new Histogrammebilineaire();
    		panneau.setBackground(Color.WHITE);
    		fenetre.add(panneau);
    		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    fenetre.setLocationRelativeTo(null);
    		fenetre.setVisible(true);
    	}
     
    	@Override
    	protected void paintComponent(Graphics g) {
     
     
    		super.paintComponent(g);
    		int larg = getWidth();
    		int haut = getHeight();
     
    		int dim = 8; // dimension d'une case de la grille
     
    		int largeurImage = Math.min(monImage.getWidth(), monImage2.getWidth());
    		int hauteurImage = Math.min(monImage.getHeight(), monImage2.getHeight());
    		for (int i = 0; i < largeurImage; i++) {
    			for (int j = 0; j < hauteurImage; j++) {
     
    				int pixel = monImage.getRGB(i, j);
    				int gray = ((pixel >> 16) & 0xFF) >> 3;
     
    				int pixel2 = monImage2.getRGB(i, j);
    				int gray2 = ((pixel2 >> 16) & 0xFF) >> 3;
     
    				int valeur = (gray + gray2);
    				g.setColor(new Color(valeur, valeur, valeur));
     
    						g.fillRect(i * dim, j * dim,dim, dim); // remplissage (fill)
     
    			}
    		}
     
                    g.setColor(Color.WHITE); // il faut bien entendu donner une couleur à la grille, sinon ça prend la dernière couleur de l'histo
                    for(int i = 0; i < larg; i +=dim) {
                         g.drawLine(i,0,i, haut); // Les lignes verticales de la grille
                    }	
     		for(int i = 0; i < haut; i +=dim) {
                         g.drawLine(0,i,larg, i); // Les lignes horizontales de la grille
                    }	
     
    	}
     
    	public static void main(String[] arg) {
    		Fenetre();
    	}
    }
    Ce qui affiche ça, si les fichiers existent (enfin, j'ai éclairci l'image, sinon c'était trop sombre, et, evidemment agrandi la fenêtre) :

    Nom : histo_bilinéaire.png
Affichages : 238
Taille : 144,9 Ko
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #17
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut
    Merci pour votre retour enfaite je veux pas que les cases depasser 32 sur 32 c'est pour ça j'ai ajouter les 2 boucles !!!! Du coup ça mrchera pas si on les laisse ?

  18. #18
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par YOUHANA Voir le message
    Merci pour votre retour enfaite je veux pas que les cases depasser 32 sur 32 c'est pour ça j'ai ajouter les 2 boucles !!!! Du coup ça mrchera pas si on les laisse ?
    Tu veux dire que tu veux maximum 32 cases, c'est ça ? Il faut juste intégrer cette limite dans les boucles.

    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
    @Override
    	public void paintComponent(Graphics g) {
     
     
    		super.paintComponent(g);
    		int larg = getWidth();
    		int haut = getHeight();
     
    		int dim = 8; // dimension d'une case de la grille
     
    		int nbCaseMax = 32;// 32 cases max;
     
    		int tailleMax = dim * nbCaseMax; 
    		larg = Math.min(tailleMax, larg);
    		haut = Math.min(tailleMax, haut);
     
    		int largeurImage = Math.min(nbCaseMax,Math.min(monImage.getWidth(), monImage2.getWidth()));
    		int hauteurImage = Math.min(nbCaseMax, Math.min(monImage.getHeight(), monImage2.getHeight()));
    		for (int i = 0; i < largeurImage; i++) {
    			for (int j = 0; j < hauteurImage; j++) {
     
     
    				int pixel = monImage.getRGB(i, j);
    				int gray = ((pixel >> 16) & 0xFF) >> 3;
     
    				int pixel2 = monImage2.getRGB(i, j);
    				int gray2 = ((pixel2 >> 16) & 0xFF) >> 3;
     
    				int valeur = (gray + gray2);
    				g.setColor(new Color(valeur, valeur, valeur));
     
    						g.fillRect(i * dim, j * dim,dim, dim); // remplissage (fill)
     
    			} 
    		}
     
    		g.setColor(Color.WHITE); // il faut bien entendu donner une couleur à la grille, sinon ça prend la dernière couleur de l'histo
     		for(int i = 0; i < larg; i +=dim) {
                g.drawLine(i,0,i, haut); // Les lignes verticales de la grille
     
             }	
     		for(int i = 0; i < haut; i +=dim) {
                g.drawLine(0,i,larg, i); // Les lignes horizontales de la grille
     
    		}
     
    	}
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  19. #19
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut
    Non enfaite je veux 1024 cases , j'ai essayé avec votre code avec 1024 mais enfaite j'obtiens que des cases noir je comprends pas comment avez vous eu le resultat de votre photo parceque c'est exactement mon résultat attendu sauf que moi je les veux que sure cases de 32 su 32( 1024 cases)
    Nom : Capture.PNG
Affichages : 304
Taille : 158,1 Ko

  20. #20
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    nbCase c'est le nombre de case en largeur et hauteur, pas le nombre de case total. si tu mets int nbCaseMax=1024; ça va te faire 1024*1024 cases !

    Et si ton image est sombre, c'est parce que tes images sont sombres. Moi aussi mon résultat est hyper sombre, comme je l'ai écrit, et j'ai dû éclaircir l'image justement. Maintenant, si on te demande d'appliquer un algo, tu l'appliques et le résultat est ce qu'il est. Tu peux faire un test pour éclaircir l'image si tu veux, mais ça ne sera plus conforme à la demande (attention, le problème réside peut-être dans la combinaison des 2 valeurs : tu ne m'as rien dit sur la demande initiale à ce sujet).
    Pour éclaircir, moi j'ai simplement multiplier par 4 : int valeur = (gray + gray2)<<2; (la valeur reste sur 8 bits max), mais tu pourrais forcer les 2 bits de poids fort aussi (int valeur = (gray + gray2) | 0xC0;) mais ça fait vraiment très blanc pour le coup.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [2D/3D] [OpenGL] Histogramme 3D d'une image
    Par 686insomnia686 dans le forum Qt
    Réponses: 9
    Dernier message: 09/10/2013, 00h26
  2. [Débutant] histogramme logarithmique d'une image
    Par amal1410 dans le forum Images
    Réponses: 1
    Dernier message: 16/05/2013, 21h24
  3. histogramme vertical d'une image
    Par matrix2008 dans le forum Images
    Réponses: 5
    Dernier message: 13/12/2012, 11h49
  4. histogramme cumulé d'une image
    Par arsonlupo dans le forum Images
    Réponses: 1
    Dernier message: 02/06/2009, 21h01
  5. Réponses: 3
    Dernier message: 27/01/2005, 11h53

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