ISP/sim/bmp.hpp

35 lines
1.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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