怎么用C++读取和引用位图文件的长和宽

来源:百度知道 编辑:UC知道 时间:2024/06/13 22:50:18
这样的开头应该怎么修改才能实现
#include<stdlib.h>
#include<iostream.h>
#include<fstream.h>
#include"math.h"

typedef struct //位图文件头格式
{
int bfType; /* 类型标志,总是BM */
long bfSize; /* 文件大小 */
int bfReserved1;
int bfReserved2;
long bfOffBits; /* 位图点阵偏移量*/
}HEAD;
typedef struct
{
long biSize; /* 结构体字节总数 */
long biWidth; /* 图像宽度 */
long biHeight; /* 图像高度 */
int biPlanes; /* 必须为1 */
int biBitCount; /* 每个像素所占二进制位数,可能是1,4,8或 24 */
long biCompress; /*压缩方式*/
long biSizeImage; /*像素点阵大小 */
long biXPelsPerMeter; /* 水平像素数*/
long biYPelsPerMeter; /* 垂直像素数 */
long biClrUsed; /*使用的颜色数 */
long biClrImportant; /*重要颜色数 */
}INFO;

typedef struct
{
unsigned char rgbBlue; /*蓝色所占比重*/
unsigned char rgbGreen; /*绿色所占比重*/
unsigned char rgbRed; /*红色所占比重*/
unsigned char rgbReserved; /*保留字节 */
}RGBQUAD;

只读取长宽属性吗?如下:

#include<iostream>
#include<fstream>

using namespace std;

#pragma pack(1) //1字节对齐
typedef struct tagBITMAPFILEHEADER
{
short bfType; // 位图文件的类型,必须为BM(0-1字节)
int bfSize; // 位图文件的大小,以字节为单位(2-5字节)
short bfReserved1; // 位图文件保留字,必须为0(6-7字节)
short bfReserved2; // 位图文件保留字,必须为0(8-9字节)
int bfOffBits; // 位图数据的起始位置,以相对于位图(10-13字节)
// 文件头的偏移量表示,以字节为单位
} BITMAPFILEHEADER;

typedef struct tagBITMAPINFOHEADER{
int biSize; // 本结构所占用字节数(14-17字节)
long biWidth; // 位图的宽度,以像素为单位(18-21字节)
long biHeight; // 位图的高度,以像素为单位(22-25字节)
short biPlanes; // 目标设备的级别,必须为1(26-27字节)
short biBitCount;// 每个像素所需的位数,必须是1(双色),(28-29字节)
// 4(16色),8(256色)或24(真彩色)之一
int biCompression; // 位图压缩类型,必须是 0(不压缩),(30-33字节)
// 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
int biSizeImage; // 位图的大小,以字节为单位(34-37字节)
long biXPelsPerMeter; // 位图水平分辨率,每米像素数(38-41字节)
lo