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 :

Pb Lecture de bitmap monochrome


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Juin 2002
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3
    Par d�faut Pb Lecture de bitmap monochrome
    Bonjour,

    j'avais envoy� le message suivant sur le forum de C++, n'ayant pas eu de r�ponse, je retente ma chance sur celui de Borland

    Je suis en train de modifier un programme sur Builder pour qu'il puisse lire des images bitmap monochrome. Malheureusement, il me manque une fonction pour pouvoir lire les pixels (en RGB ou niveaux de gris, g ce qu'il faut mais pas en monochrome (cod� sur un bit)).

    Quelqu'un pourrait-il m'aider s'il vous plait? ca devient assez urgent.

    Merci d'avance.

    a+

  2. #2
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 415
    Par d�faut
    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
    MyBitmap->LoadFromFile(...);
    if(MyBitmap->PixelFormat==pf1bit)//monochrome vraiment ?
        {
        for(int y=0;y<MyBitmap->Height;y++)
            {
            Byte Masque=0x80;//renouveler le masque à chaque ligne
            Byte *pByte=(Byte*)MyBitmap->ScanLine[y];
            for(int x=0;x<MyBitmap->Width;x++)
                {
                 if((pByte[x/8]&Masque)==Masque)
                    {
                    //allumé
                    }
                 else
                    {
    	  //éteint
    	  }
                 asm//rotation circulaire vers la droite du masque
                    {
    	            MOV AL,Masque;
    	            ROR AL,1;
    	            MOV Masque,AL;
                    }
                }
            }
        }
    Peut-�tre que �a marche...on ne sait jamais...

  3. #3
    Membre �prouv�
    Homme Profil pro
    VP of Research and Innovation
    Inscrit en
    Mai 2002
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Canada

    Informations professionnelles :
    Activit� : VP of Research and Innovation

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Par d�faut
    Bonjour,

    Pour lire les bits d'une image tu dois utiliser la propri�t� ScanLine.
    Son interpr�tation d�pend de la propri�t� PixelFormat.

    si ton image est cod�e en 1Bit, alors 1 octet est �gal � 8 points.
    si ton image est cod�e en 8Bits, alors 1 octet est �gal � 1 points.
    etc. ...

    Voici un exemple ou j'affiche une image sous forme de texte dans un Memo:

    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
     
        Byte *ptr;
        Memo1->Text = "";
        AnsiString Line;
     
        int iiMax = (ABitmap->Width / 8);
     
        if ((ABitmap->Width % 8) != 0) {
            iiMax++;
        }
     
            ABitmap->PixelFormat = Graphics::pf1bit;
     
            for (int y = 0; y < (ABitmap->Height); y++)
            {
                ptr = (Byte *)ABitmap->ScanLine[y];
                Line = "";
                for (int x = 0; x < iiMax; x++) {
     
                    __int16 APixel = ptr[x];
                    __int16 AMask = 0x80;
     
                    for (; AMask > 0x00; AMask = AMask >> 1) {
                        if ((APixel & AMask) == 0) {
                            Line = Line + "1";
                        }
                        else {
                            Line = Line + "0";
                        }
                    }
                    Line = Line + " ";
                }
     
                Memo1->Lines->Add(Line);
                Application->ProcessMessages();
            }

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2002
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3
    Par d�faut Merci...
    Bonjour,

    et merci beaucoup � vous 2 . je n'ai pas encore essay� les 2 m�thodes, d�s que j'ai avanc� un petit peu dans ce programme je vous en parle.

    merci encore et � bient�t.

    Lo�c

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2002
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3
    Par d�faut Ca marche!
    Si si ca marche!!

    En fait je n'avais pas pens� � lire le bitmap comme objet; dans ma premi�re version je le lisais comme fichier avec fseek et fread, et je n'avais pas de pbs de taille de pixels car tout �tait sur 8 bits ou + donc cod� sur un char...

    ...et c'est bien plus simple comme cel� d'ailleurs...

    merci encore et a+

    Lo�c

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. convertir une image BMP en Bitmap monochrome?
    Par byubi dans le forum ImageJ
    R�ponses: 3
    Dernier message: 31/03/2009, 21h42
  2. GDI bitmap monochrome->couleur
    Par freehair dans le forum MFC
    R�ponses: 10
    Dernier message: 25/02/2008, 17h02
  3. Lecture d'une image bitmap
    Par Nanoucha dans le forum Assembleur
    R�ponses: 1
    Dernier message: 17/02/2006, 22h47
  4. Lecture d'un bitmap en Java. Comment ?
    Par Jean++ dans le forum Multim�dia
    R�ponses: 10
    Dernier message: 17/01/2006, 10h03
  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