呵呵,贴在这里记录一下。

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<sys/types.h>
  4. #include <iostream>
  5. #pragma pack(2)
  6. using namespace std;
  7. //下面两个结构是位图的结构
  8. typedef struct BITMAPFILEHEADER
  9. {
  10. u_int16_t bfType;
  11. u_int32_t bfSize;
  12. u_int16_t bfReserved1;
  13. u_int16_t bfReserved2;
  14. u_int32_t bfOffBits;
  15. }BITMAPFILEHEADER;
  16. typedef struct BITMAPINFOHEADER
  17. {
  18. u_int32_t biSize;
  19. u_int32_t biWidth;
  20. u_int32_t biHeight;
  21. u_int16_t biPlanes;
  22. u_int16_t biBitCount;
  23. u_int32_t biCompression;
  24. u_int32_t biSizeImage;
  25. u_int32_t biXPelsPerMeter;
  26. u_int32_t biYPelsPerMeter;
  27. u_int32_t biClrUsed;
  28. u_int32_t biClrImportant;
  29. }BITMAPINFODEADER;
  30. void showBmpHead(BITMAPFILEHEADER &pBmpHead){
  31. cout<<"位图文件头:"<<endl;
  32. cout<<"文件头类型:"<<pBmpHead.bfType<<endl;
  33. cout<<"文件大小:"<<pBmpHead.bfSize<<endl;
  34. cout<<"保留字_1:"<<pBmpHead.bfReserved1<<endl;
  35. cout<<"保留字_2:"<<pBmpHead.bfReserved2<<endl;
  36. cout<<"实际位图数据的偏移字节数:"<<pBmpHead.bfOffBits<<endl<<endl;
  37. }
  38. void showBmpInforHead(BITMAPINFODEADER &pBmpInforHead){
  39. cout<<"位图信息头:"<<endl;
  40. cout<<"结构体的长度:"<<pBmpInforHead.biSize<<endl;
  41. cout<<"位图宽:"<<pBmpInforHead.biWidth<<endl;
  42. cout<<"位图高:"<<pBmpInforHead.biHeight<<endl;
  43. cout<<"biPlanes平面数:"<<pBmpInforHead.biPlanes<<endl;
  44. cout<<"biBitCount采用颜色位数:"<<pBmpInforHead.biBitCount<<endl;
  45. cout<<"压缩方式:"<<pBmpInforHead.biCompression<<endl;
  46. cout<<"biSizeImage实际位图数据占用的字节数:"<<pBmpInforHead.biSizeImage<<endl;
  47. cout<<"X方向分辨率:"<<pBmpInforHead.biXPelsPerMeter<<endl;
  48. cout<<"Y方向分辨率:"<<pBmpInforHead.biYPelsPerMeter<<endl;
  49. cout<<"使用的颜色数:"<<pBmpInforHead.biClrUsed<<endl;
  50. cout<<"重要颜色数:"<<pBmpInforHead.biClrImportant<<endl;
  51. }
  52. int main( int argc, char **argv )
  53. {
  54. FILE *fp = fopen(argv[1], "rb");
  55. BITMAPFILEHEADER head;
  56. BITMAPINFODEADER info;
  57. fread(&head, 1, sizeof(BITMAPFILEHEADER), fp);
  58. fread(&info, 1, sizeof(BITMAPINFODEADER), fp);
  59. showBmpHead(head);
  60. showBmpInforHead(info);
  61. cout<<sizeof(BITMAPFILEHEADER)<<endl; cout<<sizeof(BITMAPINFODEADER)<<endl;
  62. fclose(fp);
  63. return 0;
  64. }

在linux下读取bmp文件头的完整代码。的更多相关文章

  1. go 读取BMP文件头二进制读取

    BMP文件头定义: WORD 两个字节 16bit DWORD 四个字节 32bit package main import ( "encoding/binary" "f ...

  2. Arch Linux下Visual Stdio Code在格式化C代码时报错

    libtinfo.so.5: cannot open shared object file: No such file or directory Arch Linux下Visual Stdio Cod ...

  3. Linux下获取本机IP地址的代码

    Linux下获取本机IP地址的代码,返回值即为互联网标准点分格式的字符串. #define ETH_NAME "eth0" //获得本机IP地址 char* GetLocalAdd ...

  4. windows和linux下读取文件乱码的终极解决办法!

    乱码是个很恶心的问题. windows和linux读取txt文件,一旦读取了,编码发生改变,就无法再还原了,只有重启项目. 网上有很多方法都是读取文件头,方法很好,但是亲测都不能用(右移8位判断0xf ...

  5. 在windows 、linux下读取目录下所有文件名

    Windows要引入的头文件是<Windows.h> 主要是两个函数FindFirstFile.FindNextFile MSDN里是这么说的: FindFirstFile functio ...

  6. 在Firefox中发现一个在Linux下查看chm文档的插件

    在Firefox浏览器插件中搜索插件chmfox插件,安装后就可以在linux下通过Firefox浏览器阅读chm文档了.

  7. Linux下查看目录文件数和文件大小

    一.查看当前目录下文件个数 在linux下查看目录下有多少文件可以用:ls -l  命令查看,ls -lR 递归查看所有目录, 如果文件很多,则用wc命令 和 grep 命令进行过滤. wc命令显示输 ...

  8. Linux下部署多个Tomcat(完整)

    Linux下部署多个Tomcat 1.环境:1.1.Centos 5.01.2.apache-tomcat-6.0.18 2.需要解决一下几个问题2.1.不同的tomcat启动和关闭监听不同的端口2. ...

  9. Linux下读取默认MAC地址

    导读MAC(Media Access Control,介质访问控制)计算机通过它来定义并识别网络设备的位置.在嵌入式linux学习中不可避免也会遇到MAC,本文主要描述了如何通过操作OTP来读取嵌入式 ...

随机推荐

  1. MySQL数据库主从同步安装与配置总结

    MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力: ②在从主服务器进行备份,避免备份期间影响主服务器服务: ③当主服务器出现问题时 ...

  2. FMDB将对象放进数据库[二](使用runtime)

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  3. 使用Python管理Azure(1):基础配置

    Azure提供了丰富的Python SDK来对Azure进行开发管理,包括使用Azure的开源框架在Azure上创建web应用程序,对Azure的虚拟机,存储等进行管理,本系类会简单介绍如何在ASM和 ...

  4. API接口测试01理论

    定义 接口测试是系统组件间及多个系统之间的测试 如:app与Server间如何进行数据交换,传递 意义 确保主要流程及系统的稳定性 将BUG控制在项目前期 缩短产品的研发周期 检查服务器的异常处理能力 ...

  5. 如何解决自定义ToolBar起始位置的空格(左对齐)问题

    最近在做项目的时候,与到自定义toolbar的问题,自定义toolbar布局之类的并不是很难,但是自定义布局完成之后,控件总是无法左对齐,这极大的影响了App的美观. 结果谷歌后在Stack Over ...

  6. Node.js log2: ERR when execute command >npm install

    1.Node.js创建项目 项目microblog创建成功,提示:cd  microblog& npm install 项目创建完成时的目录如下图所示: 2.Node.js错误 如题所言: E ...

  7. 【hihocoder1255 Mysterious Antiques in Sackler Museum】构造 枚举

    2015北京区域赛现场赛第2题. 题面:http://media.hihocoder.com/contests/icpcbeijing2015/problems.pdf OJ链接:http://hih ...

  8. android卸载反馈实现

    博客原地址:http://blog.csdn.net/wang_shaner/article/details/41543787 实现原理 fork分叉函数 fork分叉(分裂)函数可以创建一个新进程, ...

  9. 【MFC学习笔记-作业6-sin图像】【OnDraw(CDC* pDC)】

    根据这段源代码 一步一步剖析CDC的使用 void CDrawSinXView::OnDraw(CDC* pDC) { CDrawSinXDoc* pDoc = GetDocument(); ASSE ...

  10. DevExpress GridControl一些属性使用方法总结

    一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 (1).gridView.AddN ...