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

Framework .NET Discussion :

[.NET] Débutant : Comment récupérer la couleur d'un pixel ?


Sujet :

Framework .NET

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 73
    Points : 60
    Points
    60
    Par défaut [.NET] Débutant : Comment récupérer la couleur d'un pixel ?
    Bonjour,

    Je souhaite charger une image de type bitmap avant de parcourir chacun de ses pixels afin de tester la couleur qui lui est attribué. Est ce que quelqu'un aurait une solution pratique à ce problème.

    En vous remerciant par avance.

  2. #2
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Salut castaka,

    Le meilleur moyen c'est de travailler en code unsafe pour de meilleurs performance, voici un bout que j'utilise pour transformer mes images coueur en noir et 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
     
      public Bitmap Apply(Bitmap srcImg)
            {
                if (srcImg.PixelFormat != PixelFormat.Format24bppRgb)
                    throw new ArgumentException();
     
                // get source image size
                int width = srcImg.Width;
                int height = srcImg.Height;
     
                // lock source bitmap data
                BitmapData srcData = srcImg.LockBits(
                    new Rectangle(0, 0, width, height),
                    ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
     
                // create new grayscale image
                Bitmap dstImg = Image.CreateGrayscaleImage(width, height);
     
                // lock destination bitmap data
                BitmapData dstData = dstImg.LockBits(
                    new Rectangle(0, 0, width, height),
                    ImageLockMode.ReadWrite, PixelFormat.Format8bppIndexed);
     
                int srcOffset = srcData.Stride - width * 3;
                int dstOffset = dstData.Stride - width;
     
                // do the job
                unsafe
                {
                    byte* src = (byte*)srcData.Scan0.ToPointer();
                    byte* dst = (byte*)dstData.Scan0.ToPointer();
     
                    // for each line
                    for (int y = 0; y < height; y++)
                    {
                        // for each pixel
                        for (int x = 0; x < width; x++, src += 3, dst++)
                        {
                            *dst = (byte)((src[RGB.R] + src[RGB.G] + src[RGB.B])/3);
                        }
                        src += srcOffset;
                        dst += dstOffset;
                    }
                }
                // unlock both images
                dstImg.UnlockBits(dstData);
                srcImg.UnlockBits(srcData);
     
                return dstImg;
     
            }
        }
    Dans cette portion tu accede aux aux couleur RGB de ton image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    *dst = (byte)((src[RGB.R] + src[RGB.G] + src[RGB.B])/3);
    Voila j'espere que tu pourra avancer.
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET]Comment recupérer la couleur d'un pixel de l'Ecran ?
    Par cyrcroix dans le forum Windows Forms
    Réponses: 24
    Dernier message: 07/11/2007, 10h35
  2. [ADO.Net][C# 2.0]Comment récupérer nom colonne PrimaryKey?
    Par superbobo dans le forum Accès aux données
    Réponses: 1
    Dernier message: 18/01/2006, 17h34
  3. [ADO.Net][C# 1.1]Comment réaliser relation pour 2 Dataset ?
    Par misa dans le forum Accès aux données
    Réponses: 2
    Dernier message: 07/01/2006, 06h55
  4. Réponses: 17
    Dernier message: 27/09/2005, 12h18

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