BMP文件的读取

main文件

#include 
#include 
#include "BmpRot.h"
#include "stdlib.h"
#include "math.h"

#define PI 3.14159
#define LENGTH_NAME_BMP 30

using namespace std;

BITMAPFILEHEADER strHead;
RGBQUAD strPla[256];
BITMAPINFOHEADER strInfo;

void showBmpHead(BITMAPFILEHEADER pBmpHead)
{
    cout << "位图文件头:"<> strFile;
    FILE *fpi,*fpw;
    fpi=fopen(strFile,"rb");
    if(fpi!=NULL)
    {
        WORD bfType;
        fread(&bfType,1,sizeof(WORD),fpi);
        if(0x4d42!=bfType)
        {
            cout << "the file is not a bmp file!" << endl;
            return NULL;
        }
        fread(&strHead,1,sizeof(tagBITMAPFILEHEADER),fpi);
        fread(&strInfo,1,sizeof(tagBITMAPINFOHEADER),fpi);

        for(unsigned int nCounti=0; nCounti> RotateAngle;
    angle=1.0*RotateAngle*PI/180;
    for(int i=0; i<2*height; ++i)
    {
        for(int j=0; j<2*width; ++j)
        {
            after_i=i-midX_aft;
            after_j=j-midY_aft;
            pre_i=(int)(cos((double)angle)*after_i-sin((double)angle)*after_j)+midX_pre;
            pre_j=(int)(sin((double)angle)*after_i+cos((double)angle)*after_j)+midY_pre;
            if(pre_i>=0&&pre_i=0&&pre_j

.h文件

typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned int DWORD;
typedef long LONG;
typedef struct tagBITMAPFILEHEADER{
  DWORD bfSize;
  WORD bfReserved1;
  WORD bfReserved2;
  DWORD bfOffBits;
}BITMAPFILEHEADER;

typedef struct tagBITMAPINFOHEADER{
  DWORD biSize;
  LONG biWidth;
  LONG biHeight;
  WORD biPlanes;
  WORD biBitCount;
  DWORD biCompression;
  DWORD biSizeImage;
  LONG biXPelsPerMeter;
  LONG biYPelsPerMeter;
  DWORD biClrUsed;
  DWORD biClrImportant;
}BITMAPINFOHEADER;

typedef struct tagRGBQUAD{
  BYTE rgbBlue;
  BYTE rgbGreen;
  BYTE rgbRed;
  BYTE rgbReserved;
}RGBQUAD;

typedef struct tagIMAGEDATA
{
    BYTE blue;
}IMAGEDATA;

 

你可能感兴趣的:(还需要更新)