Affichage d'une tete d'image BMP en c
Résolu
josh64
Messages postés
58
Statut
Membre
-
tassou0302 Messages postés 1 Statut Membre -
tassou0302 Messages postés 1 Statut Membre -
Bonjour, j'essaye de réaliser un programme (en c) qui va lire et afficher l'en tête d'une image .BMP
Voilà j'ai un soucis. Bon le programme compile tout ça mais il affiche pas les bonne valeur et je ne trouve pas mon erreur, donc voici mon code :
#include <stdio.h>
#include <stdlib.h>
#include <string.h> /*strcat*/
#define DEBUG
typedef unsigned char uc;
typedef unsigned int ui;
typedef unsigned short us;
typedef struct{
uc Magic[2]; /*magic number*/
ui FileSize[3];/*taille total du fichier*/
us Reserved0[1];/*champ réservé*/
us Reserved1[1] ;/*champ réservé*/
ui Offset[3];/*offset de l'image*/
}enteteInfo;
typedef struct{
ui Size;/*taille de l'en tete de l'image*/
ui Width;/*nbr colonnes*/
ui Height;/*nbr lignes*/
us Planes;/*nombre de plan*/
us Count;
ui Compr;/*methode de compression*/
ui SizeIm;/*taille total de l'image*/
ui Xpels;/*résolution horizontal*/
ui Xypels;/*résolution vertical*/
ui ClrUsed;
ui ClrImp;
}entetestruct;
void lire(void);
enteteInfo a;
entetestruct b;
int main (){
char nomFichier[]="";
FILE* f;
printf("Entrez le nom de l'image \n");
scanf("%s%*c",nomFichier);
strcat(nomFichier,".bmp");
#ifdef DEBUG
printf("\nnom de l'image avec l'extention : %s\n",nomFichier);
scanf("%*c");
#endif
f=fopen(nomFichier,"r");
if (f==NULL){
printf("ouverture impossible de %s\n",nomFichier);
scanf("%*c");
exit(0);
}
fread(&a, sizeof(a), 1, f);
fread(&b, sizeof(b), 1, f);
printf("signature : %c%c\n",a.Magic[0],a.Magic[1]);
printf("taille total du fichier : %d \nOffset : %i\n",a.FileSize,a.Offset);
printf("taille de l'entete de l'image : %d\n",b.Size);
printf("nombre de colonne : %d \nombre de lignes : %d\n",b.Width,b.Height);
printf("Planes : %hd\n",b.Planes);
printf("count : %hd\n",b.Count);
printf("Compression : %d\n",b.Compr);
printf("taille total de l'image image : %d\n",b.SizeIm);
printf("résolution horizontal : %hd\n",b.Xpels);
printf("résolution : %hd\n",b.Xypels);
fclose(f);
#ifdef DEBUG
printf("\nfichier close");
scanf("%*c");
#endif
return (0);
#ifdef DEBUG
printf("fin du programme");
scanf("%*c");
#endif
}
Voilà j'ai un soucis. Bon le programme compile tout ça mais il affiche pas les bonne valeur et je ne trouve pas mon erreur, donc voici mon code :
#include <stdio.h>
#include <stdlib.h>
#include <string.h> /*strcat*/
#define DEBUG
typedef unsigned char uc;
typedef unsigned int ui;
typedef unsigned short us;
typedef struct{
uc Magic[2]; /*magic number*/
ui FileSize[3];/*taille total du fichier*/
us Reserved0[1];/*champ réservé*/
us Reserved1[1] ;/*champ réservé*/
ui Offset[3];/*offset de l'image*/
}enteteInfo;
typedef struct{
ui Size;/*taille de l'en tete de l'image*/
ui Width;/*nbr colonnes*/
ui Height;/*nbr lignes*/
us Planes;/*nombre de plan*/
us Count;
ui Compr;/*methode de compression*/
ui SizeIm;/*taille total de l'image*/
ui Xpels;/*résolution horizontal*/
ui Xypels;/*résolution vertical*/
ui ClrUsed;
ui ClrImp;
}entetestruct;
void lire(void);
enteteInfo a;
entetestruct b;
int main (){
char nomFichier[]="";
FILE* f;
printf("Entrez le nom de l'image \n");
scanf("%s%*c",nomFichier);
strcat(nomFichier,".bmp");
#ifdef DEBUG
printf("\nnom de l'image avec l'extention : %s\n",nomFichier);
scanf("%*c");
#endif
f=fopen(nomFichier,"r");
if (f==NULL){
printf("ouverture impossible de %s\n",nomFichier);
scanf("%*c");
exit(0);
}
fread(&a, sizeof(a), 1, f);
fread(&b, sizeof(b), 1, f);
printf("signature : %c%c\n",a.Magic[0],a.Magic[1]);
printf("taille total du fichier : %d \nOffset : %i\n",a.FileSize,a.Offset);
printf("taille de l'entete de l'image : %d\n",b.Size);
printf("nombre de colonne : %d \nombre de lignes : %d\n",b.Width,b.Height);
printf("Planes : %hd\n",b.Planes);
printf("count : %hd\n",b.Count);
printf("Compression : %d\n",b.Compr);
printf("taille total de l'image image : %d\n",b.SizeIm);
printf("résolution horizontal : %hd\n",b.Xpels);
printf("résolution : %hd\n",b.Xypels);
fclose(f);
#ifdef DEBUG
printf("\nfichier close");
scanf("%*c");
#endif
return (0);
#ifdef DEBUG
printf("fin du programme");
scanf("%*c");
#endif
}
A voir également:
- Affichage d'une tete d'image BMP en c
- Légender une image - Guide
- Image iso - Guide
- Transformer une image en icone - Guide
- Affichage double ecran - Guide
- Tête de parabole défectueuse ✓ - Forum TNT / Satellite / Réception