RAW格式数据转BMP格式数据

1.BMP文件结构,注意字节对齐

__packed struct tagBITMAPFILEHEADER
{
T_U16 bfType;
T_U32 bfSize;
T_U16 bfReserved1;
T_U16 bfReserved2;
T_U32 bfOffBits;
} ;

数据结构填充,其中RawWidth、RawHeight是指RAW的图像宽高,小端格式

memcpy(&file_head_t.bfType,"BM",sizeof(file_head_t.bfType));
file_head_t.bfSize = 1078 + RawWidth*RawHeight;
file_head_t.bfOffBits = 1078;
2. BMP信息结构,注意字节对齐

__packed struct tagBITMAPINFOHEADER
{
T_U32 biSize;
T_U32 biWidth;
T_U32 biHeight;
T_U16 biPlanes;
T_U16 biBitCount;
T_U32 biCompression;
T_U32 biSizeImage;
T_U32 biXPelsePerMeter;
T_U32 biYPelsePerMeter;
T_U32 biClrUsed;
T_U32 biClrImportant;
} ;

数据结构填充,其中RawWidth、RawHeight是指RAW的图像宽高,小端格式

info_head_t.biSize = 40;
info_head_t.biWidth = RawWidth;
info_head_t.biHeight = RawHeight;
info_head_t.biPlanes = 1;
info_head_t.biBitCount = 8;
info_head_t.biCompression = 0;
info_head_t.biSizeImage = RawWidth*RawHeight;
info_head_t.biClrUsed = 256;

3.调色板数据结构

__packed typedef struct tagRGBQUAD
{
T_U8 rgbBlue;
T_U8 rgbGreen;
T_U8 rgbRed;
T_U8 rgbReserved;
} ;

其数据长度受info_head_t.biClrUsed(颜色索引数)值影响,每个索引表示一个像素的值,如果是灰度图像则rgbBlue=rgbGreen=rgbRed,每个索引占4字节256个索引占1024字节,

而图像数据的数值就是索引号

4.图像数据

直接复制RAW

原文地址:https://www.cnblogs.com/xuyu-blogs/p/11290284.html

时间: 2024-11-09 00:05:24

RAW格式数据转BMP格式数据的相关文章

DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”

背景: 本专栏"DICOM医学图像处理"受众较窄,起初只想作为自己学习积累和工作经验的简单整理.前几天无聊浏览了一下,发现阅读量两极化严重,主要集中在"关于BMP(JPG)与DCM格式转换"和"DICOM 通讯协议",尤其是许久前的第一篇博文DCMTK开源库的学习笔记1:将DCM文件保存成BMP文件或数据流(即数组).因此在2014年底前打算写几篇关于DCM格式转换的文章,此次主要聚焦"如何将BMP.JPG等常规图像保存成DCM文件&q

批量图片转换成bmp格式

将png,jpg,gif等图片格式转换成bmp格式 代码如下: import Image ##im = Image.open('BtnWrite.Image.gif') ##im.save('BtnWrite.Image.bmp') ## import os extension = ['.bmp'] listfile = os.listdir(os.getcwd()) for each in listfile: filename = each print filename im = Image.

application/x-www-form-urlencoded multipart/form-data text/plain 后台返回的数据响应的格式类型

application/x-www-form-urlencoded multipart/form-data text/plain 为什么上传文件的表单里要加个属性 enctype  后台返回的数据响应的格式类型 上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上传表单要这么 写,知其然而不知其所以然.那到底为什么要添加这个属性呢?它是什么意思呢?它又有什么其他可选值呢? 其实form表单在你不写encty

导入来自早期版本的 SQL Server 的本机格式数据和字符格式数据

导入来自早期版本的 SQL Server 的本机格式数据和字符格式数据 在 SQL Server 2014 中,您可以通过将 bcp 与 -V 开关一起使用,从 SQL Server 2000.SQL Server 2005.SQL Server 2008.SQL Server 2008 R2 或 SQL Server 2012 中导入本机和字符格式数据. -V 开关将使 SQL Server 2014 使用指定的 SQL Server 早期版本中的数据类型,并且数据文件格式与早期版本中的格式相

C# 任意类型数据转JSON格式

每天都是不一样,积极的去感受生活 C# 任意类型数据转JSON格式 /// <summary> /// List转成json /// </summary> /// <typeparam name="T"></typeparam> /// <param name="jsonName"></param> /// <param name="list"></para

WebService 返回json格式和返回xml格式的数据

返回json格式 //using System.Web.Script.Services; [WebMethod] [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] public void HelloWorld() { Context.Response.Clear(); Context.Response.ContentType = "application/json"; Model.User.U

Oracle通过PL/SQL Developer导出数据为CSV格式,VARCHAR2类型的字段如果存入的是数值(例如3307830000004059)太长,最后一位会被置为0

问题描述: Oracle通过PL/SQL Developer导出数据为CSV格式,VARCHAR2类型的字段如果存入的是数值(例如3307830000004059)太长,CSV文件该列会用科学计数法表示,即使选择该列,点击数据--.>分列,固定宽度,列数据格式选择文本,最后一位仍然会被置为0. 解决方法: Oracle通过PL/SQL Developer导出数据为CSV格式,新建一个Excel文件,点击数据-->自文本,选择之前导出的CSV文件,文件类型分隔符号,选择逗号,[选中所有列],然后

聚合数据话费充值回调格式

聚合数据-手机话费充值接口文档:https://www.juhe.cn/docs/api/id/85 聚合数据话费充值回调格式 聚合账号:xxxxx 推送地址:http://www.example.com/xxx 推送形式:post 推送参数内容格式(普通参数键值对,非json): 名称 类型 说明 sporder_id string 聚合订单号 orderid string 用户自定义的单号 sta int 充值状态1:成功 9:失败 sign string 校验值,md5(appkey+sp

在Sql Server 2016中使用For Json子句把数据作为json格式导出

原文地址:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/export-query-result-as-json-format-in-sql-server-2016/ 使用for json子句把查询结果作为json字符串导出,将作为sql server 2016中首先可用的一个特性.如果你熟悉for xml子句,那么将很容易理解for json: select ccolumn, expression, column as ali