bmp图生成
init
int width = 256;
int height = 256;
std::uint16_t count = 8;
_bmpHead.fileInfo.type[0] = 'B';
_bmpHead.fileInfo.type[1] = 'M';
_bmpHead.fileInfo.reserved1 = 0;
_bmpHead.fileInfo.reserved2 = 0;
_bmpHead.fileInfo.size = sizeof(_bmpHead) + sizeimage;
_bmpHead.fileInfo.offset = sizeof(_bmpHead);
_bmpHead.bitMapInfo.size = 40;
_bmpHead.bitMapInfo.width = width;
_bmpHead.bitMapInfo.height = height;
_bmpHead.bitMapInfo.planes = 1;
_bmpHead.bitMapInfo.count = count;
_bmpHead.bitMapInfo.compression = 0;
_bmpHead.bitMapInfo.sizeimage = sizeimage;
_bmpHead.bitMapInfo.xmeter = 0;
_bmpHead.bitMapInfo.ymeter = 0;
_bmpHead.bitMapInfo.cused = 0;
_bmpHead.bitMapInfo.cimportant = 0;
save
/*
* bmp文件头(bmp file header):共14字节;
* 位图信息头(bitmap information):共40字节;
* 调色板(color palette):可选;
* 位图数据;
*/
// 填充计算
int bytesPerLine = ((_bmpHead.bitMapInfo.width * _bmpHead.bitMapInfo.count + 31) >> 5) << 2;
// 重新计算位图的大小
_bmpHead.bitMapInfo.sizeimage = bytesPerLine * _bmpHead.bitMapInfo.height * _bmpHead.bitMapInfo.count / 8;
// 重新计算文件大小
_bmpHead.fileInfo.size = _bmpHead.bitMapInfo.sizeimage + sizeof(BmpHead);
const int colorPalette = 1024; // 调色板大小
if (_bmpHead.bitMapInfo.count == 8) // 灰度图
{
_bmpHead.fileInfo.size += colorPalette;
_bmpHead.fileInfo.offset = sizeof(BmpHead) + colorPalette;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~