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 :

Copier les valeurs des pixels d'une image dans une grille


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 Copier les valeurs des pixels d'une image dans une grille
    Bonjour,

    Je souhaite copier les valeurs du pixel de l'image dans une grille, du coup je crée une grille j'importe une image mais je sais pas quoi faire comme étape d'après. Je veux par exemple si j'ai l'image toute noir et une tache blanche au milieu la grille sera toute vide apart le milieu (le même i et même j) ou il y'aura des valeurs de la tache blanche. Voilà mon code j'appprecierai un coup de 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
    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
     @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 = monImage.getWidth();
            int hauteurImage =monImage.getHeight();
     
     
            for (int i = 0; i < largeurImage; i++) {
     
                for (int j = 0; j < hauteurImage; j++) {
     
                    int pixel = monImage.getRGB(i, j);
     
     
                    if (pixel!=0xff000000 || pixel2!=0xff000000){
                    int valeur = ((pixel >> 16) & 0xFF) ;
     
     
                Color color = Color.black;
     
     
                g.fillRect(valeur * dim, valeur * dim, dim, dim);
                            if (imax<i)
                                  imax=i;
                              if (jmax<j)
                                  jmax=j;
     
                //System.out.println("i, j  "    +i+","+j);
     
                    }}}
     
            //map.entrySet().forEach(entry-> System.out.println("Clef = " + entry.getKey() +"   Valeur = " + entry.getValue() ));
            //System.out.println("MAX : " + max);
            //System.out.println("I max   "  +imax);
            //System.out.println("J max    "  +jmax);
     
     
     
            g.setColor(Color.GREEN);
            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
     
            }
     
        }
     
     
    }

  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,

    Cela consiste simplement à remplir les cases de ta grille, autrement dit, à dessiner des rectangles pleins dans les cases des ta grllle, de la couleur des pixels.

    Les coordonnées des cases de ta grille sont (i*dim, j*dim), et leur taille, dimxdim.

    Donc pour dessiner une case de la couleur du pixel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    g.setColor(new Color(pixel));
    g.fillRect(i * dim, j * dim, dim, dim);
    tout simplement.

    Si tu dessines ta grille ensuite, cela suffit. Si tu dessines ta grille d'abord, il faudra ajuster la taille des rectangles pour ne pas redessiner par dessus la grille.

    En revanche, comme ta grille est de taille limitée (larg x haut), il faudra limiter tes boucles sur la base de ces mêmes bornes (sinon tu vas potentiellement dessiner des cases en dehors de ta grille).

    On pourrait utilser également des notions de changement d'echelle (par getScaledInstance(), ou AffineTransform appliquée au Graphics), ce qui irait beaucoup plus vite, mais la méthode ci-dessus à le mérite d'être très simple.
    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
    Bonjour,

    Oui mais enfaite normalement ce que je dois faire c'est par exemple j'ai image (1920,1280) ce qui fait 12 bits 11 bits, je prends les 5 premiers bits du i et je le mets dans le i de la grille et les 5 de j dans le j ...

  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
    Ça ne veut rien dire ce que tu dis. "12 bits 11 bits", ça veut dire quoi ? C'est 12 ou c'est 11 ? Et une image de 1980 × 1280 pixels est codée en ARGB sur 32 bits (le nombre de bits qu'il faut pour coder 4 composantes Alpha, Rouge, Vert et Bleu de 8 bits chacune) × 1980 × 1280 = 81_100_800 bits ! Quel rapport avec 12 ou 11 bits ? Et c'est quoi le i de la grille ? Ou le j ? J'en ai assez de devoir remplir les trous dans tes phrases, ou de devoir t'extorquer des précisions indispensables à la compréhension de ce tu racontes. Tant que tu n'exprimeras pas une question qui a un sens, je ne répondrais plus. D'autant plus que je pense t'avoir donné assez de matière pour que tu te débrouilles toute seule, ce qui est le but final de tout ça (ton stage, le forum et les réponses que je t'apporte) et que j'ai l'impression que tu n'assimiles pas, que tu ne fais que copier/coller sans chercher à comprendre ce que ça fait. Le dernier code que je t'ai montré remplit la grille avec des rectangles de couleur : ça répond à ta question précédente. Si ce n'est pas la bonne couleur parce que tu dois appliquer je ne sais quelle formule, ou que les points de doivent pas être remplis dans cet ordre, et bien, tu remplaces ce qu'il faut par ce qu'il faut à la place, c'est tout.
    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.

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. Réponses: 2
    Dernier message: 28/03/2014, 09h31
  3. Copier une partie d'une form dans une image
    Par Duan dans le forum Débuter
    Réponses: 5
    Dernier message: 11/05/2009, 16h16
  4. Mettre une Image dans une Image
    Par shadowhocine dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 19/12/2006, 18h40
  5. Insérer une légende dans une image avec une police plus petite
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 29/04/2006, 14h19

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