• 大小: 318KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: C/C++
  • 标签: C  读取BMP  

资源简介

本程序用C语言编写,读取一个BMP文件,对数字图像入门的同学来说,具有很好的参考价值,程序运行能通过,里面备好了Lena.bmp图像,值得一看~~~

资源截图

代码片段和文件信息

//author:zheng jianbin
//ReadBitMap
//
#include   
#include   
#include 
#include 
#include   
#include 


#define   WIDTHBYTES(bits) (((bits)+31)/32*4)

typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef long LONG;

typedef struct tagBITMAPFILEHEADER {

DWORD bfSize;               //文件大小
WORD   bfReserved1; //保留字,不考虑
WORD   bfReserved2; //保留字,同上
DWORD bfOffBits;         //实际位图数据的偏移字节数,即前三个部分长度之和
} BITMAPFILEHEADER;


//信息头BITMAPINFOHEADER,也是一个结构,其定义如下:

typedef struct tagBITMAPINFOHEADER{
//public:
DWORD   biSize;                  //指定此结构体的长度,为40
LONG    biWidth;        //位图宽
LONG    biHeight;       //位图高
WORD    biPlanes;        //平面数,为1
WORD    biBitCount;       //采用颜色位数,可以是1,2,4,8,16,24,新的可以是32
DWORD   biCompression;           //压缩方式,可以是0,1,2,其中0表示不压缩
DWORD   biSizeImage;             //实际位图数据占用的字节数
LONG    biXPelsPerMeter;   //X方向分辨率
LONG    biYPelsPerMeter;   //Y方向分辨率
DWORD   biClrUsed;                  //使用的颜色数,如果为0,则表示默认值(2^颜色位数)
DWORD   biClrImportant;             //重要颜色数,如果为0,则表示所有颜色都是重要的
} BITMAPINFOHEADER;


//调色板Palette,当然,这里是对那些需要调色板的位图文件而言的。24位和32位是不需要调色板的。
//(似乎是调色板结构体个数等于使用的颜色数。)

typedef struct tagRGBQUAD { 
//public:
BYTE     rgbBlue; //该颜色的蓝色分量
BYTE     rgbGreen; //该颜色的绿色分量
BYTE     rgbRed; //该颜色的红色分量
BYTE     rgbReserved; //保留值
} RGBQUAD;



void showBmpHead(BITMAPFILEHEADER* pBmpHead)
{
printf(“位图文件头:\n“);
printf(“文件大小:%d\n“pBmpHead->bfSize);
printf(“保留字:%d\n“pBmpHead->bfReserved1);
printf(“保留字:%d\n“pBmpHead->bfReserved2);
printf(“实际位图数据的偏移字节数:%d\n“pBmpHead->bfOffBits);

}


void showBmpInforHead(tagBITMAPINFOHEADER *pBmpInforHead)
{
printf(“位图信息头:\n“);
printf(“结构体的长度:%d\n“pBmpInforHead->biSize);
printf(“位图宽:%d\n“pBmpInforHead->biWidth);
printf(“位图高:%d\n“pBmpInforHead->biHeight);
printf(“biPlanes平面数:%d\n“pBmpInforHead->biPlanes);
printf(“biBitCount采用颜色位数:%d\n“pBmpInforHead->biBitCount);
printf(“压缩方式:%d\n“pBmpInforHead->biCompression);
printf(“biSizeImage实际位图数据占用的字节数:%d\n“pBmpInforHead->biSizeImage);
printf(“X方向分辨率:%d\n“pBmpInforHead->biXPelsPerMeter);
printf(“Y方向分辨率:%d\n“pBmpInforHead->biYPelsPerMeter);
printf(“使用的颜色数:%d\n“pBmpInforHead->biClrUsed);
printf(“重要颜色数:%d\n“pBmpInforHead->biClrImportant);
}

void showRgbQuan(tagRGBQUAD* pRGB)

printf(“(%-3d%-3d%-3d)   “pRGB->rgbRedpRGB->rgbGreenpRGB->rgbBlue);

}



void main()
{

BITMAPFILEHEADER   bitHead;
BITMAPINFOHEADER bitInfoHead; 
FILE* pfile;

char strFile[50];
printf(“please input the .bmp file name:\n“);
scanf(“%s“strFile);

pfile = fopen(strFile“rb“);//打开文件

if(pfile!=NULL)
{
   printf(“file bkwood.bmp open success.\n“);
   //读取位图文件头信息
   WORD fileType;
   fread(&fileType1sizeof(WORD)pfile);
   if(fileType != 0x4d42)
   {
    printf(“file is not .bmp file!“);
    return;
   }
   //fseek(pfile2SEEK_CUR);   // “BM“
   fread(&bitH

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      66616  2000-07-25 12:00  读取BMP文件\lena.bmp

     文件     233538  2010-08-10 21:59  读取BMP文件\read_bmp\Debug\read_bmp.exe

     文件     236920  2010-08-10 21:59  读取BMP文件\read_bmp\Debug\read_bmp.ilk

     文件      17419  2010-08-10 21:59  读取BMP文件\read_bmp\Debug\read_bmp.obj

     文件     231328  2010-08-10 21:39  读取BMP文件\read_bmp\Debug\read_bmp.pch

     文件     517120  2010-08-10 21:39  读取BMP文件\read_bmp\Debug\read_bmp.pdb

     文件      41984  2010-08-10 22:02  读取BMP文件\read_bmp\Debug\vc60.idb

     文件      53248  2010-08-10 21:39  读取BMP文件\read_bmp\Debug\vc60.pdb

     文件      66616  2000-07-25 12:00  读取BMP文件\read_bmp\lena.bmp

     文件       4309  2010-08-10 22:08  读取BMP文件\read_bmp\read_bmp.dsp

     文件        541  2010-08-10 21:30  读取BMP文件\read_bmp\read_bmp.dsw

     文件      33792  2010-08-10 22:08  读取BMP文件\read_bmp\read_bmp.ncb

     文件      48640  2010-08-10 22:08  读取BMP文件\read_bmp\read_bmp.opt

     文件        900  2010-08-10 21:59  读取BMP文件\read_bmp\read_bmp.plg

     文件       9667  2010-08-10 21:39  读取BMP文件\read_bmp.cpp

     目录          0  2010-08-10 21:39  读取BMP文件\read_bmp\Debug

     目录          0  2010-08-10 22:08  读取BMP文件\read_bmp

     目录          0  2010-08-10 21:59  读取BMP文件

----------- ---------  ---------- -----  ----

              1562638                    18


评论

共有 条评论