#include <iostream>

#include <fstream>

#include <bitset>

using namespace std;



typedef unsigned char   BYTE;

typedef unsigned short  WORD;

typedef unsigned long   DWORD;

typedef long            LONG;



void main(){

    fstream file;

        int i,j;

    char RGBQUAD[4][256], PIXEL[512][512],temp[512][512];

    char fileName[32]="lena.bmp";

    



    WORD bfType;

    DWORD bfSize;

    WORD bfReserved1;

    WORD bfReserved2;

    DWORD bfOffBits;

    DWORD biSize;

    LONG biWidth;

    LONG biHeight;

    WORD biPlanes;

    WORD biBitCount;

    DWORD biCompression;

    DWORD biSizeImage;

    LONG biXPelsPerMeter;

    LONG biYPelsPerMeter;

    DWORD biClrUsed;

    DWORD biClrImportant;



    

    file.open(fileName, ios::in|ios::binary);

    file.read((char*)&bfType, sizeof(WORD));

    file.read((char*)&bfSize, sizeof(DWORD));

    file.read((char*)&bfReserved1, sizeof(WORD));

    file.read((char*)&bfReserved2, sizeof(WORD));

    file.read((char*)&bfOffBits, sizeof(DWORD));

    file.read((char*)&biSize, sizeof(DWORD));

    file.read((char*)&biWidth, sizeof(LONG));

    file.read((char*)&biHeight, sizeof(LONG));

    file.read((char*)&biPlanes, sizeof(WORD));

    file.read((char*)&biBitCount, sizeof(WORD));

    file.read((char*)&biCompression, sizeof(DWORD));

    file.read((char*)&biSizeImage, sizeof(DWORD));

    file.read((char*)&biXPelsPerMeter, sizeof(LONG));

    file.read((char*)&biYPelsPerMeter, sizeof(LONG));

    file.read((char*)&biClrUsed, sizeof(DWORD));

    file.read((char*)&biClrImportant, sizeof(DWORD));

    file.read(RGBQUAD[0], sizeof(RGBQUAD));

    file.read(PIXEL[0], sizeof(PIXEL));

    file.close();



    //顯示檔案資訊

        cout << "FILE_HEADER\n"

         << "bfType=\t\t"       << bfType       << '\n'

         << "bfSize=\t\t"       << bfSize       << '\n'

         << "bfReserved1=\t"    << bfReserved1  << '\n'

         << "bfReserved2=\t"    << bfReserved2  << '\n'

         << "bfOffBits=\t"      << bfOffBits    << "\n\n"

         << "INFO_HEADER\n"

         << "biSize=\t\t"       << biSize       << '\n'

         << "biWidth=\t"        << biWidth      << '\n'

         << "biHeight=\t"       << biHeight     << '\n'

         << "biPlanes=\t"       << biPlanes     << '\n'

         << "biBitCount=\t"     << biBitCount   << '\n'

         << "biCompression=\t"  << biCompression    << '\n'

         << "biSizeImage=\t"    << biSizeImage      << '\n'

         << "biXPelsPerMeter="  << biXPelsPerMeter  << '\n'

         << "biYPelsPerMeter="  << biYPelsPerMeter  << '\n'

         << "biClrUsed=\t"      << biClrUsed        << '\n'

         << "biClrImportant=\t" << biClrImportant   << "\n\n";

		 