I want to read a bmp file in c.
i can read the header but now i need to see het photo.
the attachments is am exemple.
#include <stdio.h>
/* We moeten een apparte struct aanmaken voor de Magic Number, anders krijgen we een foutieve waarde hiervoor.*/
struct MagicNumber{
unsigned char type[2]; //Magicnumber, gebruikt om de BMP file te identificeren. Meestal staat hier “BM”//
}BmpMN;
struct INFOHEADER{
unsigned int sizeByte; //De grootte van dit bestand, uitgedrukt in bytes.//
unsigned short reserved1; //Enkele gereserveerde bytes, deze mogen ingevuld worden door het programma dat de afbeelding aanmaakt//
unsigned short reserved2; //Enkele gereserveerde bytes, deze mogen ingevuld worden door het programma dat de afbeelding aanmaakt//
unsigned int offsetbits; //De offset:het begin adres van de byte waarop de bitmap data kan gevonden worden. Dit is meestal gelijk aan de grootte van de header+ palette//
unsigned int sizeHeader; //Grootte van de header(in dit geval 40 bytes)//
int width; //Breedte van de bitmap in pixels//
int heigth; //Hoogte van de bitmap in pixels//
unsigned short planes; //Het aantal kleurvlakken dat gebruikt werd, deze waarde staat op 1//
unsigned short bitcount; //Aantal bits per pixel (1 4 8 16 24 of 32)//
unsigned int compression; //Compressie methode (een getal tussen 0 en 5, meestal 0)//
unsigned int sizeImage; //Grootte van de bitmap image data in bytes//
int xpelspermeter; //Horizontale resolutie,in pixels per meter//
int ypelspermeter; //Verticale resolutie, in pixels per meter//
unsigned int colorsused; //Het aantal kleuren in de kleurenpalet. Indien hier 0 staat is het 2^n.//
unsigned int colorsimportant; //Het aantal belangrijke kleuren in het palet(meestal 0)//
unsigned int palette1; //Waarde van de kleur zwart in R-G-B//
unsigned int palette2; //Waarde van de kleur wit in R-G-B//
} BitmapInfoHeader;
void leesBestand() {
FILE *filepointer;
int i=0;
char foto[2000];//Pointer aanmaken van het type 'FILE'//
char mode[]="rb"; //Modus: w voor 'write', r voor 'read'//
char INfile[]="C:\\x_2k.bmp"; //Bestandsnaam//
if ((filepointer = fopen(INfile, mode)) == NULL) //Maak een pointer aan naar het bestand op de harde schijf //
{
printf("Cannot open %s file\n", INfile); //Geef melding als pointer een NULL-return geeft//
return 0; //Anders loopt het programma nog vast als er een foutieve bestandsnaam is ingevoerd//
}
else //Anders begin programma om header in te lezen//
{
printf("\n** READING FILE **\n");
fread(&BmpMN,sizeof(BmpMN),1,filepointer);
printf("Magic Number: %s\n",BmpMN.type);
fread(&BitmapInfoHeader,sizeof(BitmapInfoHeader),1,filepointer);
printf("Size in bytes: %d\n",BitmapInfoHeader.sizeByte);
printf("Reserved bytes: %d %d\n",BitmapInfoHeader.reserved1,BitmapInfoHeader.reserved2);
printf("Starting byte: %d\n",BitmapInfoHeader.offsetbits);
printf("Size of header: %d\n",BitmapInfoHeader.sizeHeader);
printf("Dimensions of bitmap: %d by %d\n",BitmapInfoHeader.width,BitmapInfoHeader.heigth);
printf("Color planes: %d\n",BitmapInfoHeader.planes);
printf("Bits per pixel: %d\n",BitmapInfoHeader.bitcount);
printf("Compression type: %d\n",BitmapInfoHeader.compression);
printf("Image content <in bytes>: %d\n",BitmapInfoHeader.sizeImage);
printf("Horizontal resolution: %d\n",BitmapInfoHeader.xpelspermeter);
printf("Vertical resolution: %d\n",BitmapInfoHeader.ypelspermeter);
printf("Colors in palette: %d\n",BitmapInfoHeader.colorsused);
printf("Important colors used: %d\n",BitmapInfoHeader.colorsimportant);
printf("Palette: %x %x\n",BitmapInfoHeader.palette1,BitmapInfoHeader.palette2);
}
fclose(filepointer); // sluit het bestand //
};
int main(void){
printf("*****************************************************************\n");
printf("*Dit project is ontwikkeld door Jongen Joeri en Dewalque Michael*\n");
printf("*****************************************************************\n");
leesBestand();
return 0;
}