ISP/sim/bmp.hpp

35 lines
1.2 KiB
C++
Raw Normal View History

2024-05-18 18:56:32 +08:00
#ifndef __BMP_H__
#define __BMP_H__
#include <stdint.h>
#pragma pack(push, 1) // 1字节对齐
// BMP文件头结构体
struct BMPFileHeader {
uint16_t type; // 文件类型,必须为"BM"
uint32_t size; // 文件大小,单位为字节
uint16_t reserved1; // 保留字段必须为0
uint16_t reserved2; // 保留字段必须为0
uint32_t offset; // 像素数据起始位置,单位为字节
};
// BMP位图信息头结构体
struct BMPInfoHeader {
uint32_t size; // 信息头大小必须为40
int32_t width; // 图像宽度,单位为像素
int32_t height; // 图像高度,单位为像素
uint16_t planes; // 颜色平面数必须为1
uint16_t bit_count; // 每个像素的位数必须为24
uint32_t compression; // 压缩方式必须为0
uint32_t size_image; // 像素数据大小,单位为字节
int32_t x_pels_per_meter; // X方向像素数/米
int32_t y_pels_per_meter; // Y方向像素数/米
uint32_t clr_used; // 使用的颜色数必须为0
uint32_t clr_important; // 重要的颜色数必须为0
};
#pragma pack(pop)
bool write_bmp(const char* filename, uint8_t* data, int32_t width, int32_t height);
#endif