BMP文件格式

#ifndef BMPFILEFORMAT_H
#define BMPFILEFORMAT_H
#include <QtEndian>
#include <QString>
#include <QFile>
#include <QByteArray>
#pragma pack(1)
typedef struct tagBITMAPFILEHEADER
{
    quint16_le  bfType;         // 值为 "BM"
    quint32_le  bfSize;         //位图文件的大小      小端
    quint16_le  bfReserved1;    //保留字值为 0
    quint16_le  bfReserved2;    //保留字值为 0
    quint32_le  bfOffBits;      //位图数据的起始位置  小端
} BITMAPFILEHEADER;             //大小14字节

typedef struct tagBITMAPINFOHEADER{
    quint32_le      biSize;         //本结构所占用字节数(15-18字节)
    quint32_le      biWidth;        //位图的宽度,以像素为单位(19-22字节)
    quint32_le      biHeight;       //位图的高度,以像素为单位(23-26字节)
    quint16_le      biPlanes;       //目标设备的级别,必须为1(27-28字节)
    quint16_le      biBitCount;     //每个像素所需的位数,必须是1(双色),(29-30字节)
    quint32_le      biCompression;  //位图压缩类型,必须是0(不压缩),(31-34字节)
    quint32_le      biSizeImage;    //位图的大小(其中包含了为了补齐行数是4的倍数而添加的空字节),以字节为单位(35-38字节)
    quint32_le      biXPelsPerMeter;//位图水平分辨率,每米像素数(39-42字节)
    quint32_le      biYPelsPerMeter;//位图垂直分辨率,每米像素数(43-46字节)
    quint32_le      biClrUsed;      //位图实际使用的颜色表中的颜色数(47-50字节)
    quint32_le      biClrImportant;//位图显示过程中重要的颜色数(51-54字节)
} BITMAPINFOHEADER;                 //大小40字节

void saveBMPtoFile(QString name, BITMAPFILEHEADER *header1, BITMAPINFOHEADER *header2, char *buffer)
{
    QFile file(name);
    if (!file.open(QIODevice::WriteOnly))
              return;
    file.write(reinterpret_cast<char *>(header1), sizeof (*header1));
    file.write(reinterpret_cast<char *>(header2), sizeof (*header2));
    file.write(buffer, header2->biWidth * header2->biHeight * header2->biBitCount / 8);
    file.close();
}
#endif // BMPFILEFORMAT_H
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值