博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux灰度图数组保存为bmp图像
阅读量:4178 次
发布时间:2019-05-26

本文共 2378 字,大约阅读时间需要 7 分钟。

typedef unsigned char BYTE;typedef unsigned short WORD;typedef unsigned int DWORD;typedef unsigned long LONG;#pragma pack(1)typedef struct tagBITMAPFILEHEADER {    WORD    bfType;    DWORD   bfSize;    WORD    bfReserved1;    WORD    bfReserved2;    DWORD   bfOffBits;} BITMAPFILEHEADER;typedef struct tagBITMAPINFOHEADER {    DWORD      biSize;    LONG       biWidth;    LONG       biHeight;    WORD       biPlanes;    WORD       biBitCount;    DWORD      biCompression;    DWORD      biSizeImage;    LONG       biXPelsPerMeter;    LONG       biYPelsPerMeter;    DWORD      biClrUsed;    DWORD      biClrImportant;} BITMAPINFOHEADER;typedef struct tagRGBQUAD {    BYTE    rgbBlue;    BYTE    rgbGreen;    BYTE    rgbRed;    BYTE    rgbReserved;} RGBQUAD;#pragma pack()void SaveImg(unsigned char * pData, int iWidth, int iHeight, string strPath){    BITMAPFILEHEADER targetfileheader;    BITMAPINFOHEADER targetinfoheader;    memset(&targetfileheader, 0, sizeof(BITMAPFILEHEADER));    memset(&targetinfoheader, 0, sizeof(BITMAPINFOHEADER));    targetfileheader.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD);    targetinfoheader.biSize = iWidth * iHeight + sizeof(RGBQUAD) * 256 + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);    targetfileheader.bfReserved1 = 0;    targetfileheader.bfReserved2 = 0;    targetfileheader.bfType = 0x4D42;    targetinfoheader.biBitCount = 8;    targetinfoheader.biSize = sizeof(BITMAPINFOHEADER);    targetinfoheader.biHeight = iHeight;    targetinfoheader.biWidth = iWidth;    targetinfoheader.biPlanes = 1;    targetinfoheader.biCompression = 0;    targetinfoheader.biSizeImage = 0;    targetinfoheader.biXPelsPerMeter = 0;    targetinfoheader.biYPelsPerMeter = 0;    targetinfoheader.biClrImportant = 0;    targetinfoheader.biClrUsed = 0;    RGBQUAD rgbquad[256];    for (int i = 0; i < 256; i++)    {        rgbquad[i].rgbBlue = i;        rgbquad[i].rgbGreen = i;        rgbquad[i].rgbRed = i;        rgbquad[i].rgbReserved = 0;    }    FILE * fp = fopen(strPath.c_str(), "wb");    fwrite(&targetfileheader, sizeof(BITMAPFILEHEADER), 1, fp);    fwrite(&targetinfoheader, sizeof(BITMAPINFOHEADER), 1, fp);    fwrite(&rgbquad, sizeof(RGBQUAD), 256, fp);    for (int i = 0; i < iHeight; i++)    {        fwrite(pData + (iHeight - 1 - i) * iWidth, iWidth, 1, fp);    }    fclose(fp);}

 

转载地址:http://gglai.baihongyu.com/

你可能感兴趣的文章
Gennerate Unique 10 digit ID
查看>>
ConcurrentHashSet的使用
查看>>
Java复制文件的4种方式
查看>>
datatables对某列进行求和
查看>>
记录切换openjdk遇到的一个坑
查看>>
Lombok---@EqualsAndHashCode(callSuper = true)的使用
查看>>
Java实体映射工具 MapStruct的简单应用
查看>>
IDEA中的Git操作
查看>>
sharding-jdbc配置主从数据库
查看>>
请求https跳过证书认证
查看>>
JDBC多线程插入大量数据.md
查看>>
MYSQL查看数据库相关信息
查看>>
JAVA多线程插入MYSQL数据库
查看>>
记录ajax 发送json数据时引发的问题
查看>>
Chrome在Win下的跨域解决方案
查看>>
SpringBoot 快速下载最新的版本依赖
查看>>
Maven-dependencyManagement的使用
查看>>
springcloud 配置 spring.cloud.config.uri 无效
查看>>
第七篇: 分布式配置中心(Greenwich版)
查看>>
.properties文件 git 提交后中文字符会乱码
查看>>