linux 保存bmp 图片
//#pragma pack(1)
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned int DWORD; // 会出现bmp 头 信息不对 将long 改为int // 结构体添加 __attribute__((packed))typedef struct tagBITMAPFILEHEADER{WORD bfType; //Linux此值为固定值,0x4d42 DWORD bfSize; //BMP文件的大小,包含三部分 WORD bfReserved; //置0 WORD bfReserved2; //保留,0DWORD bfOffBits; //文件起始位置到图像像素数据的字节偏移量 }__attribute__((packed)) BITMAPFILEHEADER;//__attribute__((packed))typedef struct tagBITMAPINFOHEADER{DWORD biSize; //文件信息头的大小,40 DWORD biWidth; //图像宽度 DWORD biHeight; //图像高度 WORD biPlanes; //BMP存储RGB数据,总为1 WORD biBitCount; //图像像素位数,笔者RGB位数使用24 DWORD biCompression; //压缩 0:不压缩 1:RLE8 2:RLE4 DWORD biSizeImage; //4字节对齐的图像数据大小 DWORD biXPelsPerMeter; //水平分辨率 像素/米DWORD biYPelsPerMeter; //垂直分辨率 像素/米DWORD biClrUsed; //实际使用的调色板索引数,0:使用所有的调色板索引 DWORD biClrImportant;
}__attribute__((packed)) BITMAPINFOHEADER;typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;static void SaveImage(int width, int height, const void* buffer, const char* path)
{//Set BITMAPINFOHEADER
BITMAPINFOHEADER bi;
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = width;
bi.biHeight = -height;
bi.biPlanes = 1;
bi.biBitCount = 32;
bi.biCompression = 0;
bi.biSizeImage = ((width*height) <<2);
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;//Set BITMAPFILEHEADER
BITMAPFILEHEADER bf;
bf.bfType = 0x4d42;
bf.bfSize = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER) + bi.biSizeImage;
bf.bfReserved = 0;
bf.bfReserved2 = 0;
bf.bfOffBits = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER);FILE* fp;
if((fp = fopen(path, "wb")) == NULL)return;fwrite(&bf,sizeof(BITMAPFILEHEADER),1,fp); //写入文件头
fwrite(&bi,sizeof(BITMAPINFOHEADER),1,fp); //写入信息头
fwrite(buffer,bi.biSizeImage,1,fp); //写入图像数据
fclose(fp);
}int main()
{int count = 0;char num[100];snprintf(num, 100, "/home/leizhang/Documents/picture/%d.bmp", count);SaveImage(width, height, buffer, num);
}
linux 可能会出现bmp文件头信息不对需要将
typedef unsigned int DWORD; // 会出现bmp 头 信息不对 将long 改为int
结构体添加 __attribute__((packed))
linux 保存bmp 图片相关推荐
- framebuffer 保存 bmp图片格式
最近需要完成一个从framebuffer中进行读取,然后将内存的东西保存为bmp图片格式,我的其他博客内容对framebuffer进行详细的讲解,以及bmp的格式进行详细的讲解. 之前从网上看到了一些 ...
- Linux下BMP图片截图
Linux下BMP图片截图 MP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持.随着Windows操作系统的流行与丰富的W ...
- Linux下BMP图片添加水印
Linux下BMP图片添加水印 BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持.随着Windows操作系统的流行与丰 ...
- C++ 保存bmp图片
在 C 语言中,你可以使用 Windows 图像处理库(Windows GDI)来保存 BMP 图片.你需要使用到两个重要的函数:CreateBitmap 和 SaveBitmap. CreateBi ...
- Linux下BMP图片缩放
Linux下BMP图片缩放 MP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持.随着Windows操作系统的流行与丰富的W ...
- linux下BMP图片旋转
linux下BMP图片旋转 MP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持.随着Windows操作系统的流行与丰富的W ...
- 【数字图像处理】C++读取、旋转和保存bmp图像文件编程实现
通过我这些天用C++读写bmp图像的经历,摸索再摸索,终于对bmp文件的结构.操作有了一定的了解,下面就大概介绍bmp图片纯C++的读取.旋转和保存的实现过程. 要用C++读取bmp图片文件,首先要弄 ...
- 将OpenGL渲染的结果保存为图片
概述 所需要做的很简单,就是使用glReadPixels函数来获取OpenGL当前渲染出的像素数据,主要参考了 opengl 保存渲染好的图像_szfhy的博客-CSDN博客_opengl保存图像. ...
- Java_最不重要位替换(LSB)基于24位BMP图片
隐写术的一个简单示例 向BMP图片中隐藏一段文字并保存,从保存的图片中提取文字. 原理:把需要隐藏的文本信息转换成二进制字符流,再将其拆分成一个个的0和1,隐藏在像素数据(RGB字节)中,因对RGB的 ...
- Linux系统笔记:shell命令、文件系统、Vi编辑器、文件IO、mmap()、bmp图片格式、线程
文章目录 一.shell命令集 二.ubuntu文件系统 三.vi编辑器 四.文件IO 五.Linux中C库mmap()函数详解 六.bmp图片格式详解 七.C语言笔记 (一)标准IO函数 time( ...
最新文章
- Open3D点云处理算法最全合集
- 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出当前执行文件的路径和调用模块的路径...
- spring4-3-AOP-面向切面编程
- 数学之路(2)-数据分析-R基础(5)
- nginx tcp代理_nginx——TCP/UDP Load Balancing
- 《深入理解OSGi:Equinox原理、应用与最佳实践》一2.2 Bundle
- Android通用流行框架大全
- 前端第一天 HTML基础
- (王道408考研数据结构)第八章排序-第二节:直接插入排序和希尔排序
- jmeter跨线程组传多个值_jmeter多用户登录跨线程组操作传值
- 清除实例或静态事件的所有事件侦听器
- 观察者模式(发布--订阅模式)
- JavaScript与JSP区别
- 苹果手机其他占内存很大去哪删除_Iphone内存总是不够用?原来这才是正确清理垃圾的方法,长见识了...
- 【译】jquery基础教程(jQuery Fundamentals)——(第一部分)概述
- 【转】恢复默认vs2005
- android app入口函数,Android App程序运行过程 ActivityThread.main()------详解系列(一)...
- python locale.setlocale_语言环境.setlocale(LC_NUMERIC):如何使其在Windows上运行
- KALI2021安装teemo的一些问题
- html绘制钟表的原理,html5 canvas绘制钟表