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
| bitmap* lecture(char* nom)
{
unsigned char temp[4]; // chaine de carac temporaire qui sera utilisé pour récupérer les différentes infos
bitmap *bmp; // variable renvoyée par la fonction
FILE * fichier; // un pointeur sur FILE
bmp=(bitmap*)malloc(sizeof(bitmap)); // on alloue dynamiquement le pointeur sur bitmap
fichier = fopen (nom,"r"); // on ouvre le fichier en lecture seule
fread (bmp->sign,2,1,fichier); // on récupère la signature
fread (&temp,4,1,fichier); // puis la taille de l'image
bmp->taille = conv (temp,4); // que l'on converti en décimal
fread (&temp,4,1,fichier); // la zone réservée
fread (&temp,4,1,fichier); // l'offset
bmp->offset = conv (temp,4); // que l'on converti aussi
fread (&temp,4,1,fichier); // taille de la zone info
bmp->info = conv (temp,4);
fread (&temp,4,1,fichier); // la largeur de l'image
bmp->largeur = conv(temp,4);
fread (&temp,4,1,fichier); // la hauteur de l'image
bmp->longueur = conv(temp,4);
fread (&temp,2,1,fichier); // le nombre d'info
bmp->nbplan = conv (temp,2);
fread (&temp,2,1,fichier); // le mode d'affichage
bmp->bppixel = conv (temp,2);
fread (&temp,4,1,fichier); // le format de compression
bmp->comp = conv (temp,4);
fread (&temp,4,1,fichier); // la taille de l'image
bmp->tim = conv (temp,4);
fread (&temp,4,1,fichier); // les résolutions horizontale
bmp->Hres = conv (temp,4); // et verticale
fread (&temp,4,1,fichier);
bmp->Vres = conv (temp,4);
fread (&temp,4,1,fichier);
bmp->nbco = conv (temp,4); // nbre de couleurs utilisées
fread (&temp,4,1,fichier);
bmp->impco = conv (temp,4); // nbre de couleurs importantes
fclose (fichier); // on ferme le fichier
bmp->pixel=(unsigned char*)malloc(sizeof(bmp->taille));
fread(bmp->pixel,1,bmp->taille,fichier);
return bmp; // on retourne le pointeur sur la structure bitmap
} |
Partager