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

  • 相关阅读:
    SQL Server中跨服务器跨数据库之间的数据增删改查
    Tomcat部署项目的方法
    java的位运算
    手机和邮箱格式验证
    Java实现List中某个对象属性中的字符串参数首字母进行排序
    springboot+dubbo+ZooKeeper+mybatis搭建分布式项目
    Java爬页面数据
    判断指定日期是否为节假日、双休日、工作日
    Java代码ping ip工具类
    Java生成压缩文件(zip、rar 格式
  • 原文地址:https://www.cnblogs.com/lidabo/p/3326500.html
Copyright © 2020-2023  润新知