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++Builder Discussion :

image bitmap [Non suivi]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Juin 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1
    Par défaut image bitmap
    je suis un etudiant en electronique, je travail dans le domaine de traitement d'image,j'utilise le builder 5.0 pour la programmation,
    Mon probleme ce situe au niveau de l'affichage d'une image bitmap et la décompsition de cette image en trois couleurs de base (rouge , vert et
    bleu) ,puis affiché les 3 images associés à chaque couleurs




    J'ai utilisé la comande (Canvas->Draw(0,0,GrayLevels) pour afficher
    l'image bitmap et (A[i][j] = GetRValue(pBitmap->Canvas->Pixels[j][i]) pour la décomposition en couleur rouge
    merci pour les reponces

  2. #2
    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
    merci pour les reponces
    Mais quelle est la question?

  3. #3
    Membre confirmé Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par défaut Bitmap
    Bonjour,

    Tu y étais presque. Il faut utiliser les fonctions GetRValue, GetGValue, GetBValue.
    Voici un exemple pour rendre une image couleur en niveau de gris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            for (int l = 0; l < FImage->H; l++)
            {
                    for (int c = 0; c < FImage->W; c++)
                    {
                            TColor Co = FImage->pImage->Canvas->Pixels[c][l];
                            unsigned long p = (0.30*GetRValue(Co)) + (0.59*GetGValue(Co)) + (0.11*GetBValue(Co));
                            ImageBitmap->Canvas->Pixels[c][l] = TColor(RGB(p,p,p));
                    }
                    FAttente->AvancePBar();
            }
    // Fimage est juste un form avec un bitmap.

  4. #4
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    ou utiliser ScanLine, beaucoup plus rapide :

    Mettons que tu utilises :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Graphics::TBitmap * bmpSource;
    Graphics::TBitmap * bmpR;
    Graphics::TBitmap * bmpG;
    Graphics::TBitmap * bmpB;
    Alors le code est :

    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
    for(int i = 0; i < bmpSource->Height; i++)
    {   
           BYTE * rowSouce = (BYTE*)bmpSource->ScanLine[i];
           BYTE * rowR = (BYTE*)bmpR->ScanLine[i];
           BYTE * rowG = (BYTE*)bmpG->ScanLine[i];
           BYTE * rowB = (BYTE*)bmpB->ScanLine[i];
     
           for(int j = 0; j < bmpSource->Width; j++)
          {   
                BYTE * colSource = (BYTE *)(rowSource + 3 * j);
                BYTE * colR = (BYTE *)(rowR + 3 * j);
                BYTE * colG = (BYTE *)(rowG + 3 * j);
                BYTE * colB = (BYTE *)(rowB + 3 * j);
     
                colB[0] = colB[1] = colB[2] = colSource[0];
                colG[0] = colG[1] = colG[2] = colSource[1];
                colR[0] = colR[1] = colR[2] = colSource[2];
          }
    }
    A+

    Flo.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    De la même manière qu'il est possible de créer des bitmaps 8 bits à niveaux de gris,
    on peut créer des bitmaps 8 bits à niveaux de Bleu, Rouge ou Vert.
    Le résultat final prendra beaucoup moins de place en mémoire !

    Attention au PixelFormat du bitmap source !

    A plus !

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/12/2004, 11h00
  2. Comment changer l'image Bitmap en fond d'écran du bureau ?
    Par Maddelphi dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 23/06/2004, 19h57
  3. Afficher et comparer 2 images bitmap
    Par leplusnul dans le forum MFC
    Réponses: 2
    Dernier message: 12/01/2004, 16h54
  4. generer une image bitmap a partir d'une scene OGL
    Par FreshLog dans le forum OpenGL
    Réponses: 4
    Dernier message: 01/07/2003, 11h29
  5. Lecture d'une image bitmap
    Par Geronimo dans le forum x86 32-bits / 64-bits
    Réponses: 18
    Dernier message: 28/06/2002, 12h01

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