如何获取bmp图片的信息,如:长和宽 只知道有这样一个结构体bitmapinfoheaderbitmapinfoheader 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CBitmap bm;//..此处加载位图文件BITMAP bmp;bm.GetBitmap(&bmp); 建议你先找一本图像处理的书,或者干脆一本讲windows gdi里面位图的书大概看一下原理。 呵呵,不是在耍大家吧?都知道这个结构体了还问?一、BMP文件结构 1. BMP文件组成 BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 2. BMP文件头 BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 其结构定义如下: typedef struct tagBITMAPFILEHEADER { WORDbfType; // 位图文件的类型,必须为BM DWORD bfSize; // 位图文件的大小,以字节为单位 WORDbfReserved1; // 位图文件保留字,必须为0 WORDbfReserved2; // 位图文件保留字,必须为0 DWORD bfOffBits; // 位图数据的起始位置,以相对于位图 // 文件头的偏移量表示,以字节为单位 } BITMAPFILEHEADER; 3. 位图信息头 BMP位图信息头数据用于说明位图的尺寸等信息。 typedef struct tagBITMAPINFOHEADER{ DWORD biSize; // 本结构所占用字节数 LONGbiWidth; // 位图的宽度,以像素为单位 LONGbiHeight; // 位图的高度,以像素为单位 WORD biPlanes; // 目标设备的级别,必须为1 WORD biBitCount; // 每个像素所需的位数,必须是1(双色), // 4(16色),8(256色)或24(真彩色)之一 DWORD biCompression; // 位图压缩类型,必须是 0(不压缩), // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一 DWORD biSizeImage; // 位图的大小,以字节为单位 LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数 LONGbiYPelsPerMeter; // 位图垂直分辨率,每米像素数 DWORD biClrUsed; // 位图实际使用的颜色表中的颜色数 DWORD biClrImportant; // 位图显示过程中重要的颜色数 } BITMAPINFOHEADER; 用C语言的文件操作,按照顺序把这两部分数据读出来就知道了 。 那帮忙看看为什么读不出来。 HANDLE hFile; BITMAPFILEHEADER bmpfheader; BITMAPINFOHEADER bmpiheader; DWORD nBytesRead; hFile=CreateFile("F:\vc\ReadBmp\Debug\SmallIcon.bmp",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); ReadFile(hFile,&bmpfheader,sizeof(BITMAPFILEHEADER),&nBytesRead,NULL); ReadFile(hFile,&bmpiheader,sizeof(BITMAPINFOHEADER),&nBytesRead,NULL); unsigned long width=bmpiheader.biWidth; CloseHandle(hFile);我想获得图片的长度,怎么读不出来呢? socket编程? 如何判断局域网某台机是否开通了某个端口 有人用过封装的ADO类吗?请教一个问题 看WinPcap文档时有一段代码不懂 请问ADO如何访问Oracle的函数啊? 请都一个简章问题....现在常说的.net 是一种什么语言, 是不是VC 的高版本啊! 我的进度条为什么不动? 紧急求援:postMessage怎么会导致程序发行版崩溃??? 请教两个菜问题。 一个小问题,各位帮忙指点!! 菜鸟提问:如何在project1.cpp中使用MessageBox()? 一个VC的问题:怎样给命名管道传递第一个参数?
//..此处加载位图文件
BITMAP bmp;
bm.GetBitmap(&bmp);
一、BMP文件结构
1. BMP文件组成
BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。
2. BMP文件头
BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。
其结构定义如下:
typedef struct tagBITMAPFILEHEADER
{
WORDbfType; // 位图文件的类型,必须为BM
DWORD bfSize; // 位图文件的大小,以字节为单位
WORDbfReserved1; // 位图文件保留字,必须为0
WORDbfReserved2; // 位图文件保留字,必须为0
DWORD bfOffBits; // 位图数据的起始位置,以相对于位图
// 文件头的偏移量表示,以字节为单位
} BITMAPFILEHEADER;
3. 位图信息头
BMP位图信息头数据用于说明位图的尺寸等信息。
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; // 本结构所占用字节数
LONGbiWidth; // 位图的宽度,以像素为单位
LONGbiHeight; // 位图的高度,以像素为单位
WORD biPlanes; // 目标设备的级别,必须为1
WORD biBitCount; // 每个像素所需的位数,必须是1(双色),
// 4(16色),8(256色)或24(真彩色)之一
DWORD biCompression; // 位图压缩类型,必须是 0(不压缩),
// 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
DWORD biSizeImage; // 位图的大小,以字节为单位
LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数
LONGbiYPelsPerMeter; // 位图垂直分辨率,每米像素数
DWORD biClrUsed; // 位图实际使用的颜色表中的颜色数
DWORD biClrImportant; // 位图显示过程中重要的颜色数
} BITMAPINFOHEADER;
用C语言的文件操作,按照顺序把这两部分数据读出来就知道了 。
BITMAPFILEHEADER bmpfheader;
BITMAPINFOHEADER bmpiheader;
DWORD nBytesRead; hFile=CreateFile("F:\vc\ReadBmp\Debug\SmallIcon.bmp",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
ReadFile(hFile,&bmpfheader,sizeof(BITMAPFILEHEADER),&nBytesRead,NULL);
ReadFile(hFile,&bmpiheader,sizeof(BITMAPINFOHEADER),&nBytesRead,NULL);
unsigned long width=bmpiheader.biWidth;
CloseHandle(hFile);我想获得图片的长度,怎么读不出来呢?