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

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

[cpp] view plaincopy

  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. }  
时间: 2024-10-24 19:06:06

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

Linux下读取默认MAC地址的方法

  Linux下读取默认MAC地址的方法           MAC(Media Access Control,介质访问控制)计算机通过它来定义并识别网络设备的位置.在嵌入式linux学习中不可避免也会遇到MAC,本文主要描述了如何通过操作OTP来读取嵌入式linux设备网卡中的MAC地址 一.适用范围 这里主要介绍读取网卡MAC地址的方法,适用于EasyARM-i.MX287A开发套件,其应用原理及配套示例也适用于下表1.1所列出的产品型号. 二.原理介绍 MAC(Media Access C

系统-linux下 读取 exfat,求大神

问题描述 linux下 读取 exfat,求大神 本人系统时centos 安装完成后,不能读取exfat 求大神指教怎么读写 exfat 解决方案 从 googlecode上 下载exfat-utils-1.1.1.tar fuse-exfat-1.1.0.tar然后编译后 make and make install 就可以自动挂载和读写 exfat了

Linux下用Python脚本监控目录变化代码分享

  这篇文章主要介绍了Linux下用Python脚本监控目录变化代码分享,本文直接给出实现代码,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/usr/bin/env python #coding=utf-8   import os from pyinotify import WatchManager, Notifier, ProcessEven

linux 下如何实现svn同步线上web代码

问题描述 linux 下如何实现svn同步线上web代码 求完整详细教程 linux 下如何实现svn同步线上web代码 解决方案 http://www.cnblogs.com/me115/archive/2013/04/07/3002058.htmlhttp://blog.sina.com.cn/s/blog_ae25516f0102vmka.html 解决方案二: http://blog.chinaunix.net/uid-22150747-id-189264.html 解决方案三: Lin

Linux下java环境变量设置的完整步骤

Linux下java环境变量设置的完整步骤: 从java.sun.com上下载JDK的安装文件,一般是jdk1.5.0_10_XXXX.bin的格式. 解开生成JDK目录,这里假设JDK安装在/usr/java/jdk1.5.0_10中: 代码: sudo chmod 755 jdk1.5.0_10_XXXX.bin   sudo ./jdk1.5.0_10_XXXX.bin sudo mkdir /usr/java sudo mv jdk1.5.0_10/ /usr/java 代码: sudo

Linux下读取文件失败

问题描述 这是我的读取代码: public static List<String> addFileToList(String bKFilePath) {BufferedReader bkFile = null;List<String> list = new ArrayList<String>();try {LOG.debug("bKFilePath:"+bKFilePath);boolean isReadable=new File(bKFilePat

linux下的c语言的随机数算法代码

在linux下取随机数,当然可以简单的用rand函数,不过要注意的是一定要设置好种子,否则伪随机数就会变成非常伪的随机数.设置种子,一般就用time函数返回当前时间即可.一般来讲,这样的做法基本上就可以了,因为虽然我们用的是随机数,但是由于种子不同,从上亿的数中去猜测我们的种子几乎是不可能的. 但是如果我们的种子算法被知道了,那么显然就不行了.当然作为某些应用也无所谓,比如我们要在屏幕上随机的画一只小猪.这样的应用几乎不会有谁会去关心下一次会是什么结果.不过有些应用就不一样了,大的不说,就是一些

通过对BMP 文件头取图片的实际尺寸MM

问题描述 已取得某一文件的头信息如下biBitCount8biClrImportant256biClrUsed256biCompression0biPlanes1biSizeImage0biXPelsPerMeter2835biYPelsPerMeter2835height9527size40width6648但用计算dpiWidth=6648*1000/2835dpiHeight=9527*1000/2835的尺寸与打印的实际尺寸不一致,难道必须得通过打印机的DPI来计算吗? 解决方案 解决方

asp.net(c#)下读取word文档的方法小结_实用技巧

第一种方法: 复制代码 代码如下: Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "Application/msword"; string s=Server.MapPath("C#语言参考.doc"); Response.WriteFile("C#语言参考.doc"); Response.Write(s); Response.Flush(); Re