zoukankan      html  css  js  c++  java
  • 在linux下读取bmp文件头的完整代码。

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

    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. }  

  • 相关阅读:
    杰出人才项目管理的设计与实现
    企业人事信息管理系统开发与设计
    高等职业院校人事薪资管理系统的开发与实现
    基于UML的高校组织人事档案管理系统建模研究
    基于UML技术的电子商务系统设计
    人事管理系统的设计与实现
    文献随便目录4
    Qt 设置button互斥,一组button只能选中一个
    C++ 子类重写父类函数,子类调用重写函数,执行父类的函数还是子类的函数?
    QLabel 设置背景图片的方法和解决图片太大不能完显示的办法
  • 原文地址:https://www.cnblogs.com/lidabo/p/3326500.html
Copyright © 2011-2022 走看看