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

recuperer le contenu d'un fichier bitmap dans une matrice


Sujet :

C

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut recuperer le contenu d'un fichier bitmap dans une matrice
    salut
    je veux récupérer le contenu d'un fichier bitmap dans une matrice comment je doit procéder
    exemple: le fichier 1.bmp représente le chiffre 1 je veux que ma matrice soit récupérée comme suit:

    0,0,0,1,0,
    0,0,1,1,0,
    0,0,0,1,0,
    0,0,0,1,0,
    0,0,0,1,0
    et merci de votre aide

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Il te faudra utiliser les fonctions :

    • fopen
    • fgets
    • sscanf
    • fclose


    à toi de nous montrer ce que tu peux faire..

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    voila le debut de mon code est e que je continue comme ça:
    il y a un pb avec : printf("nombre de bits :%d\n", img.taille_img);
    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
    //1-Entête du fichier
    typedef struct
    {
        char signature[2];//indique s'il s'agit d'un fichier BMP à l'aide des deux caractères BM sur 2 octets.
        int fileSize;//La taille totale du fichier en octets (sur 4 octets)
        int reserved;//Un champ réservé (sur 4 octets)
        int offset;//adresse relative du début des informations concernant l'image par rapport au début du fichier
    }fileHeader;
    //2-Entête de l'image
    typedef struct{
     
        int taille;//La taille de l'entête de l'image en octets (codée sur 4 octets).
        int largeur;
        int hauteur;
        short nplans;//Cette valeur vaut toujours 1
        short nbits;//le nombre de bits utilisés pour coder la couleur
        int compression;//vaut 0 lorsque l'image n'est pas compressée
        int taille_img;//La taille totale de l'image en octets (sur 4 octets).
        int hRes;//résolution horizontale  nombre de pixels par mètre horizontalement
        int vRes;
        int nColor;
        int nImportantColor;
        //short code;
        //Color  palette;
    }bmpHeader;
     
    int main()
    {
     
        FILE* fichier=NULL;
        char data[5][5]={{0}};
        fileHeader f;
        bmpHeader img;
        fichier=fopen("2.bmp","r");
        fread(&f,sizeof(f),1,fichier);
        fread(&img,sizeof(img),1,fichier);
     
        printf("Signature :%c%c\n", f.signature[0], f.signature[1]);
        printf("nombre de bits :%d\n", img.taille_img);
     
     
     
        fclose(fichier);
     
        return 0;
    }

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Pour utiliser fread, il me semblait qu'il faut ouvrir le fichier en mode binaire "rb".

    N'oublie pas de mettre les balises CODE et /CODE

    pour connaitre le nombre de bit de ton fichier, tu peux toujours te positionner à la fin avec fseek et compter le nombre de bit avec ftell.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Neckara Voir le message
    pour connaitre le nombre de bit de ton fichier, tu peux toujours te positionner à la fin avec fseek et compter le nombre de bit avec ftell.
    il y a plus fiable et prévu :

    fstat

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    salut
    merci pour vos réponse
    je n'arrive pas à lire les données de l'images il me faut l'algorithme , comment décider que c'est un 0 ou un 1 et à partir de quelle position.
    j'ouvre le fichier en mode binaire, et après comment stocker les données dans le tableau
    @+

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Pour stocker dans un tableau c'est très très simple :

    fread(ton_tableau, sizeof(un élément), nbre d'éléments, fichier)
    ou
    fread(ton_tableau, taille_fichier, 1, fichier);

    Par contre je ne comprend pas tout à fait des autres questions.

    Ton fichier est uniquement constitué de 0 et de 1.
    Ton tableau sera constitué d'éléments constitué de x 0 ou 1 selon le type (char : 8 0 ou 1/int 32 0 ou 1/etc...)

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    salut

    merci pour discussion

    tu as un fichier bmp 5*5 par exemple qui affiche 1





    , le problème est remplir un tableau par le contenu de cette image qd il y a du blanc on met 0 et pour la couleur noir 1 ce qui revient au résultat suivant:

    0,0,0,1,0,
    0,0,1,1,0,
    0,0,0,1,0,
    0,0,0,1,0,
    0,0,0,1,0
    Images attachées Images attachées  

  9. #9
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Essayes de voir comment sont codés chaque pixel et pour un pixel donné, tu récupère les informations (rouge, vert, bleu, transparence je suppose) et tu te fait un petit algo pour choisir en fonction de cela la couleur

    ex : if(moyenne(rouge, vert, bleu) >= 127) -> noir sinon blanc

    Sinon, je ne vois pas trop.

  10. #10
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    As tu vérifié ce que te donnais sizeof(fileHeader) ? Je pense que tu t'attends à ce que cela te donne 14, mais il y a de grandes chances que cela te donnes 16...

    L'offset des champs d'une structure sont souvent modifiés par le compilateur pour les aligner sur des frontières mémoires permettant d'optimiser les accès.

    Cherchez donc une option qui vous permette de forcer l’arrangement de la structure (attribut packed par exemple).

  11. #11
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    il y a plus fiable et prévu :

    fstat
    fseek() et ftell() ont l'avantage d'être des fonctions standard. fstat() est une fonction POSIX.1, donc certes très portable et à utiliser sans modération :-)

    Avec mes meilleures salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    fseek() et ftell() ont l'avantage d'être des fonctions standard. fstat() est une fonction POSIX.1, donc certes très portable et à utiliser sans modération :-)
    dont acte

  13. #13
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    merci a tous
    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
     
     
    typedef struct{
    short st_dev;
    short st_ino;
    short st_mode;
    short st_nlink;
    int st_uid;
    int st_gid;
    short st_rdev;
    long st_size;
    long st_atime;
    long st_mtime;
    long st_ctime;
     
    }statut;
       FILE* fichier=NULL;
       fichier=fopen("1.bmp","rb");
       statut stat;
       fstat(fichier,&stat);
       printf("%d",stat.st_size);

    la fonction fstat() ne donne pas la taille exacte du fichier
    @+

  14. #14
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    bonsoir aidez moi
    je me sens bloqué
    je recommence des le début:

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
     
     
    typedef struct
    {   //1-Entête du fichier
        char signature[2];//indique s'il s'agit d'un fichier BMP à l'aide des deux caractères BM sur 2 octets.
        int fileSize;//La taille totale du fichier en octets (sur 4 octets)
        int reserved;//Un champ réservé (sur 4 octets)
        int offset;//adresse relative du début des informations concernant l'image par rapport au début du fichier
        //2-Entête de l'image
        int taille;//La taille de l'entête de l'image en octets (codée sur 4 octets).
        int largeur;
        int hauteur;
        short nplans;//Cette valeur vaut toujours 1
        short nbits;//le nombre de bits utilisés pour coder la couleur
        int compression;//vaut 0 lorsque l'image n'est pas compressée
        int taille_img;//La taille totale de l'image en octets (sur 4 octets).
        int hRes;//résolution horizontale  nombre de pixels par mètre horizontalement
        int vRes;
        int nColor;
        int nImportantColor;
     
    }bmpInfo;
     
     
    int main()
    {
        FILE* fichier=NULL;
        bmpInfo f;
        fichier=fopen("1.bmp","rb");
        fread(&f,sizeof(f),1,fichier);
        printf("Signature :%c%c\n", f.signature[0], f.signature[1]);
        printf("taille totale du fichier %d",&f.fileSize);
        return 0;
    }
    affiche:

    Signature :BM
    taille totale du fichier 2293528

    cette taille n'ai pas correcte car le fichier 1.bmp est de taille 82 octets
    ou es le probléme
    @+

  15. #15
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 141
    Billets dans le blog
    150
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("taille totale du fichier %d",&f.fileSize);
    Vous affichez un pointeur et non un entier.
    La ligne correcte est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("taille totale du fichier %d",f.fileSize);
    qui affichera l'entier, au lieu de son adresse mémoire.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  16. #16
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    merci oui c'est vrai
    même avec cette modification j'ai 0 comme taille

  17. #17
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    salut
    voila le code une autre fois

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct
    {   //1-Entête du fichier
        char signature[2];//indique s'il s'agit d'un fichier BMP à l'aide des deux caractères BM sur 2 octets.
        int fileSize;//La taille totale du fichier en octets (sur 4 octets)
        int reserved;//Un champ réservé (sur 4 octets)
        int offset;//adresse relative du début des informations concernant l'image par rapport au début du fichier
        //2-Entête de l'image
        int taille;//La taille de l'entête de l'image en octets (codée sur 4 octets).
        int largeur;
        int hauteur;
        short nplans;//Cette valeur vaut toujours 1
        short nbits;//le nombre de bits utilisés pour coder la couleur
        int compression;//vaut 0 lorsque l'image n'est pas compressée
        int taille_img;//La taille totale de l'image en octets (sur 4 octets).
        int hRes;//résolution horizontale  nombre de pixels par mètre horizontalement
        int vRes;
        int nColor;
        int nImportantColor;
     
    }bmpInfo;
    void imageInfo(bmpInfo* img){
            printf("Signature :%c%c\n", img->signature[0], img->signature[1]);
            printf("taille totale du fichier %d\n",img->fileSize);
            printf("reservee %d\n",img->reserved);
            printf("decalage : %d\n",img->offset);
    }
     
    int main()
    {
        FILE* fichier=NULL;
        bmpInfo *img=malloc(sizeof(bmpInfo));
        fichier=fopen("1.bmp","rb");
        if (fichier == NULL)
            printf ("Erreur a l'ouverture du fichier\n");
        else {
            printf ("Fichier bien ouvert !\n");
            fread(img,sizeof(bmpInfo),1,fichier);
            imageInfo(img);
            fclose(fichier);
        }
        return 0;
    }
    voila le résultat de l’exécution:

    Fichier bien ouvert !
    Signature :BM
    taille totale du fichier 0
    reservee 4063232
    decalage : 2621440

    le pb de taille et offset?
    @++

  18. #18
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    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
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    #pragma pack(1)
    typedef struct
    { //BITMAPFILEHEADER
      char  bfType[2];
      int   bfSize;
      short bfReserved1;
      short bfReserved2;
      int   bfOffBits;
      //BITMAPINFOHEADER
      int   biSize;
      int   biWidth;
      int   biHeight;
      short biPlanes;
      short biBitCount;
      int   biCompression;
      int   biSizeImage;
      int   biXPelsPerMeter;
      int   biYPelsPerMeter;
      int   biClrUsed;
      int   biClrImportant;
    } bmpInfo;
    #pragma pack()
     
     
    int imageInfo(bmpInfo *img)
    {
      int offset = 0;
      printf("------------------------------------------------------------- BITMAPFILEHEADER\n");
      printf("0x%08X (%08d) bfType           %8c%c (0x%04X)\n", offset, offset, img->bfType[0], img->bfType[1], *(short *)img->bfType);
      offset += sizeof img->bfType;
      printf("0x%08X (%08d) bfSize           %9d (0x%08X)\n",   offset, offset,  img->bfSize, img->bfSize);
      offset += sizeof img->bfSize;
      printf("0x%08X (%08d) bfReserved1      %9hd (0x%04hX)\n", offset, offset,  img->bfReserved1, img->bfReserved1);
      offset += sizeof img->bfReserved1;
      printf("0x%08X (%08d) bfReserved2      %9hd (0x%04hX)\n", offset, offset,  img->bfReserved2, img->bfReserved2);
      offset += sizeof img->bfReserved2;
      printf("0x%08X (%08d) bfOffBits        %9d (0x%08X)\n",   offset, offset,  img->bfOffBits, img->bfOffBits);
      printf("------------------------------------------------------------- BITMAPINFOHEADER\n");
      offset += sizeof img->bfOffBits;
      printf("0x%08X (%08d) biSize           %9d (0x%08X)\n",   offset, offset, img->biSize, img->biSize);
      offset += sizeof img->biSize;
      printf("0x%08X (%08d) biWidth          %9d (0x%08X)\n",   offset, offset, img->biWidth, img->biWidth);
      offset += sizeof img->biWidth;
      printf("0x%08X (%08d) biHeight         %9d (0x%08X)\n",   offset, offset, img->biHeight, img->biHeight);
      offset += sizeof img->biHeight;
      printf("0x%08X (%08d) biPlanes         %9d (0x%04hX)\n",  offset, offset, img->biPlanes, img->biPlanes);
      offset += sizeof img->biPlanes;
      printf("0x%08X (%08d) biBitCount       %9d (0x%04hX)\n",  offset, offset, img->biBitCount, img->biBitCount);
      offset += sizeof img->biBitCount;
      printf("0x%08X (%08d) biCompression    %9d (0x%08X)\n",   offset, offset, img->biCompression, img->biCompression);
      offset += sizeof img->biCompression;
      printf("0x%08X (%08d) biSizeImage      %9d (0x%08X)\n",   offset, offset, img->biSizeImage, img->biSizeImage);
      offset += sizeof img->biSizeImage;
      printf("0x%08X (%08d) biXPelsPerMeter  %9d (0x%08X)\n",   offset, offset, img->biXPelsPerMeter, img->biXPelsPerMeter);
      offset += sizeof img->biXPelsPerMeter;
      printf("0x%08X (%08d) biYPelsPerMeter  %9d (0x%08X)\n",   offset, offset, img->biYPelsPerMeter, img->biYPelsPerMeter);
      offset += sizeof img->biYPelsPerMeter;
      printf("0x%08X (%08d) biClrUsed        %9d (0x%08X)\n",   offset, offset, img->biClrUsed, img->biClrUsed);
      offset += sizeof img->biClrUsed;
      printf("0x%08X (%08d) biClrImportant   %9d (0x%08X)\n",   offset, offset, img->biClrImportant, img->biClrImportant);
      return offset;
    }
     
     
    int main(void)
    {
      const char filename[] = "1.bmp";
      FILE *fichier = fopen(filename, "rb");
     
      if(!fichier)
        printf ("Erreur a l'ouverture du fichier [%s]\n", filename);
      else
      {
        bmpInfo *img = malloc(sizeof *img);
     
        if(img)
        {
          int i, tmp, offset;
          printf("\n[%s]\n", filename);
          fread(img, sizeof(bmpInfo), 1, fichier);
     
          if(img->bfType[0] == 'B' && img->bfType[1] == 'M')
          {
            offset = imageInfo(img);
     
            if(img->biBitCount == 1)
            {
              printf("---------------------------------------------------------------------- RGBQUAD\n");
              fread(&tmp, sizeof tmp, 1, fichier);
              offset += sizeof img->biClrImportant;
              printf("0x%08X (%08d)                  %9d (0x%08X)\n", offset, offset, tmp, tmp);
              fread(&tmp, sizeof tmp, 1, fichier);
              offset += sizeof tmp;
              printf("0x%08X (%08d)                  %9d (0x%08X)\n", offset, offset, tmp, tmp);
     
              printf("------------------------------------------------------------------------- BITS\n");
              for(i = 0; i < img->biSizeImage / (int)sizeof tmp; i++)
              {
            	  char bin[33];
                fread(&tmp, sizeof tmp, 1, fichier);
                offset += sizeof tmp;
                printf("0x%08X (%08d)                   %8d (0x%08X) (%s)\n", offset, offset, tmp, tmp, itoa(tmp, bin, 2));
              }
            }
          }
          free(img);
        }
        fclose(fichier);
      }
     
      return 0;
    }
    Résultat:
    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
     
    [1.bmp]
    ------------------------------------------------------------- BITMAPFILEHEADER
    0x00000000 (00000000) bfType                  BM (0x4D42)
    0x00000002 (00000002) bfSize                  82 (0x00000052)
    0x00000006 (00000006) bfReserved1              0 (0x0000)
    0x00000008 (00000008) bfReserved2              0 (0x0000)
    0x0000000A (00000010) bfOffBits               62 (0x0000003E)
    ------------------------------------------------------------- BITMAPINFOHEADER
    0x0000000E (00000014) biSize                  40 (0x00000028)
    0x00000012 (00000018) biWidth                  5 (0x00000005)
    0x00000016 (00000022) biHeight                 5 (0x00000005)
    0x0000001A (00000026) biPlanes                 1 (0x0001)
    0x0000001C (00000028) biBitCount               1 (0x0001)
    0x0000001E (00000030) biCompression            0 (0x00000000)
    0x00000022 (00000034) biSizeImage             20 (0x00000014)
    0x00000026 (00000038) biXPelsPerMeter          0 (0x00000000)
    0x0000002A (00000042) biYPelsPerMeter          0 (0x00000000)
    0x0000002E (00000046) biClrUsed                2 (0x00000002)
    0x00000032 (00000050) biClrImportant           2 (0x00000002)
    ---------------------------------------------------------------------- RGBQUAD
    0x00000036 (00000054)                          0 (0x00000000)
    0x0000003A (00000058)                   16777215 (0x00FFFFFF)
    ------------------------------------------------------------------------- BITS
    0x0000003E (00000062)                        232 (0x000000E8) (11101000)
    0x00000042 (00000066)                        232 (0x000000E8) (11101000)
    0x00000046 (00000070)                        232 (0x000000E8) (11101000)
    0x0000004A (00000074)                        200 (0x000000C8) (11001000)
    0x0000004E (00000078)                        232 (0x000000E8) (11101000)

  19. #19
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Par défaut
    ça c'est de la réponse !
    bravo !

    A+

  20. #20
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    Merci à tous

    magma²

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

Discussions similaires

  1. Récupérer le contenu d'un fichier texte dans une variable
    Par heureactuelle dans le forum MATLAB
    Réponses: 2
    Dernier message: 17/05/2008, 15h10
  2. recuperer le contenu d'un fichier txt dans un JTextArea
    Par fraisa1985 dans le forum Composants
    Réponses: 1
    Dernier message: 09/02/2008, 12h25
  3. Copier le contenu d'un fichier distant dans une variable en local
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 16/08/2007, 20h34
  4. Réponses: 4
    Dernier message: 11/07/2007, 18h40
  5. Réponses: 1
    Dernier message: 18/04/2007, 18h13

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