Problème lecture BMP
alpha
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je viens de faire un programme qui lit les informations d'un BMP (cf. ici (https://www.commentcamarche.net/contents/1200-bmp-format-bmp pour plus de détails).
Mais ne m'affiche pas ce que je veux. Dès le deuxième printf sa foire (i m'affiche une taille de 0 octet).
Je viens de faire un programme qui lit les informations d'un BMP (cf. ici (https://www.commentcamarche.net/contents/1200-bmp-format-bmp pour plus de détails).
Mais ne m'affiche pas ce que je veux. Dès le deuxième printf sa foire (i m'affiche une taille de 0 octet).
#include <stdio.h> #include <stdlib.h> #include "constants.h" typedef struct { /* Entête du fichier */ unsigned char signature[2]; /* Signature sur 2 octets */ unsigned int fsize; /* Taille du fichier sur 4 octets */ unsigned int field; /* Champ réservé sur 4 octets */ unsigned int offset; /* Adresse de départ de l'image sur 4 octets */ /* Entête de l'image */ unsigned int hsize; /* Taille de l'entête de l'image sur 4 octets */ unsigned int width; /* Largeur de l'image sur 4 octets */ unsigned int height; /* Hauteur de l'image sur 4 octets */ unsigned int plane; /* Nombre de plan sur 2 octets */ unsigned int bits; /* Profondeur de codage de la couleur (nombres de bits) sur 2 octets */ unsigned int compression; /* Méthode de compression de l'image sur 4 octets */ unsigned int isize; /* Taille de l'image sur 4 octets */ unsigned int wresolution; /* Résolution horizontale sur 4 octets */ unsigned int hresolution; /* Resolution verticale sur 4 octets */ unsigned int cnumber; /* Nombre de couleurs de la palette sur 4 octets */ unsigned int icnumber; /* Nombre de couleurs importante de la palette sur 4 octets */ /* Palette de l'image */ /* Codage de l'image */ } BMP; void BmpInfo(BMP bmp) { clrsrc(); printf("Information relative au fichier :\n\n"); printf("Type de fichier : "); if(bmp.signature[0] == 'B' && bmp.signature[1] == 'M') printf("Bitmap Windows\n"); else if(bmp.signature[0] == 'B' && bmp.signature[1] == 'A') printf("Bitmap OS/2\n"); else if(bmp.signature[0] == 'C' && bmp.signature[1] == 'I') printf("Icone couleur\n"); else if(bmp.signature[0] == 'C' && bmp.signature[1] == 'P') printf("Pointeur de couleur\n"); else if(bmp.signature[0] == 'I' && bmp.signature[1] == 'C') printf("Icone\n"); else if(bmp.signature[0] == 'P' && bmp.signature[1] == 'T') printf("Pointeur\n"); printf("Taille du fichier : %u o\n", bmp.fsize); printf("Champ réservé : %u\n", bmp.field); printf("Offset : %u\n", bmp.offset); printf("Entête de l'image : %u\n", bmp.hsize); printf("Largeur de l'image : %u\n", bmp.width); printf("Hauteur de l'image : %u\n", bmp.height); printf("Nombre de plan : %u\n", bmp.plane); printf("Nombre de bits : %u\n", bmp.bits); printf("Type de compression : %u\n", bmp.compression); printf("Taille de l'image : %u\n", bmp.isize); printf("Résolution horizontale : %u\n", bmp.wresolution); printf("Résolution verticale : %u\n", bmp.hresolution); printf("Nombre de couleurs : %u\n", bmp.cnumber); printf("Nombre de couleurs importante : %u\n", bmp.icnumber); } int main(void) { int i = 0; FILE *image = NULL; BMP bmp = {0}; image = fopen("image.bmp", "rb"); if(image != NULL) { fread(&bmp, sizeof(bmp), 1, image); if((bmp.signature[0] == 'B' && bmp.signature[1] == 'M') || \ (bmp.signature[0] == 'B' && bmp.signature[1] == 'A') || \ (bmp.signature[0] == 'C' && bmp.signature[1] == 'I') || \ (bmp.signature[0] == 'C' && bmp.signature[1] == 'P') || \ (bmp.signature[0] == 'I' && bmp.signature[1] == 'C') || \ (bmp.signature[0] == 'P' && bmp.signature[1] == 'T')) BmpInfo(bmp); else { printf("Problème lors de la lecture du fichier\n"); printf("Le fichier ne semble pas correspondre au type de fichier demandé\n"); } fclose(image); } else { printf("Unable to load image.bmp\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; }
A voir également:
- Problème lecture BMP
- Lecture epub sur pc - Guide
- Confirmation de lecture whatsapp - Guide
- Télécharger livre de lecture ce2 gratuit pdf - Télécharger - Éducatifs
- Accusé de lecture gmail - Guide
- Lecture gratuite - Télécharger - Vie quotidienne
2 réponses
Bonjour,
Essayez de passer l'adresse de la variable BMP à la fonction :
BMP bmp = {0}
void BmpInfo(BMP* lpbmp)
{
// pour atteindre les champs :
// lpbmp->signature[0] == 'B'
}
pour appeler la fonction :
BmpInfo(&bmp);
Essayez de passer l'adresse de la variable BMP à la fonction :
BMP bmp = {0}
void BmpInfo(BMP* lpbmp)
{
// pour atteindre les champs :
// lpbmp->signature[0] == 'B'
}
pour appeler la fonction :
BmpInfo(&bmp);
fiddy
Messages postés
11069
Date d'inscription
Statut
Contributeur
Dernière intervention
1 846
Ca ne changera rien...