在linux下读取bmp文件头的完整代码。

简介: 呵呵,贴在这里记录一下。 [cpp] view plaincopy #include  #include  #include    #include     #pragma pack(2)    using namespace std;    //下...

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

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

目录
相关文章
|
15天前
|
Linux 数据安全/隐私保护 Windows
命令方式:window向linux传文件
【10月更文挑战第6天】本文介绍了如何在Linux系统中通过命令`ip a`获取IP地址,并在Windows系统下使用CMD命令行工具和SCP命令实现文件传输。示例展示了如何将D盘中的`mm.jar`文件上传至IP地址为192.168.163.122的Linux系统的/up/目录下,最后在Linux系统中确认文件传输结果。
186 65
|
3天前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
32 5
|
3天前
|
Linux Shell 数据库
Linux文件查找新姿势:总有一种你没见过
【10月更文挑战第18天】文件查找是Linux用户提升工作效率的重要技能。本文介绍了几种实用的文件查找方法,包括基础的`find`命令、快速的`locate`和`mlocate`、高效的`fd`工具、以及结合`grep`和`rg`进行内容搜索。此外,还提供了编写Shell脚本和使用图形界面工具的建议,帮助你更灵活地管理文件。
23 3
|
22天前
|
Linux Shell
Linux系统文件默认权限
Linux系统文件默认权限
35 2
|
14天前
|
Linux 开发工具 数据安全/隐私保护
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
这篇文章介绍了在CentOS 7系统中安装Docker时遇到的两个常见问题及其解决方法:用户不在sudoers文件中导致权限不足,以及yum被锁定的问题。
30 2
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
|
1天前
|
Linux 开发工具 Perl
Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
【10月更文挑战第20天】Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
10 4
|
10天前
|
Linux Shell 数据库
Linux文件查找新姿势:总有一种你没见过
文件查找是Linux用户提升工作效率的关键技能。本文介绍了几种不常见的文件查找方法,包括使用`find`结合`column`美化输出、利用`locate`和`mlocate`快速查找、编写Shell脚本自动化任务、使用现代工具`fd`以及结合`grep`和`rg`进行内容搜索。此外,还推荐了几款图形界面搜索工具。掌握这些技巧,让你的文件查找更加高效便捷。
40 2
|
17天前
|
Linux C++
Linux c/c++文件的基本操作
在Linux环境下使用C/C++进行文件的基本操作,包括文件的创建、写入、读取、关闭以及文件描述符的定位。
14 0
Linux c/c++文件的基本操作
|
22天前
|
移动开发 Linux
Linux 文件与目录管理
Linux 文件与目录管理
18 3
|
22天前
|
关系型数据库 MySQL Linux
Linux 文件基本属性
Linux 文件基本属性
15 3