使用C++将BMP图像转换为8位灰度图详解

一、BMP文件格式详解

BMP(Bitmap)是Windows操作系统中的标准图像格式,其结构清晰且易于解析。一个典型的BMP文件由以下4部分组成:

1. 文件头(BITMAPFILEHEADER)

 

#pragma pack(push, 1) // 禁止内存对齐
struct BITMAPFILEHEADER {
    uint16_t bfType;      // 文件标识,"BM"(0x4D42)
    uint32_t bfSize;      // 文件总字节数
    uint16_t bfReserved1; // 保留字段
    uint16_t bfReserved2; // 保留字段
    uint32_t bfOffBits;   // 像素数据偏移量
};
#pragma pack(pop)

2. 信息头(BITMAPINFOHEADER)

 

struct BITMAPINFOHEADER {
    uint32_t biSize;          // 本结构体大小(40字节)
    int32_t  biWidth;         // 图像宽度(像素)
    int32_t  biHeight;        // 图像高度(正数表示底向上存储,负数表示顶向下)
    uint16_t biPlanes;        // 颜色平面数(始终为1)
    uint16_t biBitCount;      // 每像素位数(1/4/8/24/32)
    uint32_t biCompression;   // 压缩方式(0表示不压缩)
    uint32_t biSizeImage;     // 像素数据占用的字节数
    int32_t  biXPelsPerMeter; // 水平分辨率
    int32_t  biYPelsPerMeter; // 垂直分辨率
    uint32_t bi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值