本文共 1757 字,大约阅读时间需要 5 分钟。
附:二进制文件查看器及示例bmp文件
用程序读出BMP文件信息
//readbmp.h#ifndef READBMP_H_INCLUDED#define READBMP_H_INCLUDEDtypedef unsigned char BYTE;typedef unsigned short int UINT;typedef short int WORD;typedef int DWORD;typedef long LONG;typedef struct tagBITMAPFILEHEADER{ UINT bfType; /*说明文件的类型*/ DWORD bfSize; /*说明文件的大小*/ UINT bfReserved1; /*保留,设置为0 */ UINT bfReserved2; /*保留,设置为0*/ DWORD bfOffBits; /*到图像数据的偏移量*/} BITMAPFILEHEADER;typedef struct tagBITMAPINFOHEADER{ DWORD biSize; /*BITMAPINFOHEADER结构所需要的字节数*/ LONG biWidth; /*图像的宽度,以像素为单位*/ LONG biHeight; /*图像的高度,以像素为单位*/ WORD biPlanes; /*为目标设备说明位面数,其值设置为1*/ WORD biBitCount; /*位数/像素*/ DWORD biCompression; /*图像数据压缩的类型:不压缩,或4/8位RLE */ DWORD biSizeImage; /*图像的大小,以字节为单位。*/ LONG biXPelsPerMeter; /*水平分辨率,用像素/米表示*/ LONG biYPelsPerMeter; /*垂直分辨率,用像素/米表示*/ DWORD biClrUsed; /*位图使用的彩色表中的颜色索引数:2/16/256/224*/ DWORD biClrImportant; /*对图像显示有重要影响的颜色索引的数目,如果是0,表示都重要*/} BITMAPINFOHEADER;typedef struct tagRGBQUAD /* rgbq */{ BYTE rgbBlue; /*指定蓝色强度*/ BYTE rgbGreen; /*指定绿色强度*/ BYTE rgbRed; /*指定红色强度*/ BYTE rgbReserved; /*保留,设置为0 */} RGBQUAD;typedef struct tagBITMAPINFO{ BITMAPINFOHEADER bmiHeader; // 位图信息头 RGBQUAD bmiColors[16]; // 颜色表} BITMAPINFO;//像素信息typedef unsigned char IMAGEDATA;#endif // READBMP_H_INCLUDED
//main.cpp#include "readbmp.h"#include#include #include #include #include using namespace std;//变量定义BITMAPFILEHEADER bmpHeader; //文件头BITMAPINFOHEADER bmpInfoHeader; //文件信息头RGBQUAD *colorTable; //彩色表IMAGEDATA *bmpData;int main() { char bmpFileName[80]="bmp16bit.bmp";//bmp文件名 ifstream bmpFile(bmpFileName, ios::in|ios::binary); if(!bmpFile) { cerr<<"open error!"<
转载地址:http://mpyyo.baihongyu.com/