資源簡介
本程序用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
評論
共有 條評論