CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  Visual C++ 资源

谁能介绍一下BMP文件的具体格式,是什么结构,每个结构的长度等

楼主airhand(暴风雨)2002-05-28 09:58:51 在 VC/MFC / Visual C++ 资源 提问

小弟有急用  
  大体的结构我已知道,就是想知道具体一些,8、16、24、32各色的结构差异 问题点数:20、回复次数:5Top

1 楼xxjmz_78(阿甘)回复于 2002-05-28 14:42:53 得分 10

bmp(bitmap   的   缩   写)   文   件   格   式   是   windows   本   身   的   位   图   文   件   格   式,   所   谓   本   身   是   指   windows   内   部   存   储   位   图   即   采   用   这   种   格   式。   一   个   .bmp   格   式   的   文   件   通   常   有   .bmp   的   扩   展   名,   但   有   一   些   是   以   .rle   为   扩   展   名   的,   rle   的   意   思   是   行   程   长   度   编   码(run   length   encoding)。   这   样   的   文   件   意   味   着   其   使   用   的   数   据   压   缩   方   法   是   .bmp   格   式   文   件   支   持   的   两   种   rle   方   法   中   的   一   种。    
   
          bmp   文   件   可   用   每   象   素   1、   4、   8、   16   或   24   位   来   编   码   颜   色   信   息,   这   个   位   数   称   作   图   象   的   颜   色   深   度,   它   决   定   了   图   象   所   含   的   最   大   颜   色   数。   一   幅   1-bpp(位   每   象   素,   bit   per   pixel)   的   图   象   只   能   有   两   种   颜   色。   而   一   幅   24-bpp   的   图   象   可   以   有   超   过   16   兆   种   不   同   的   颜   色。    
   
          下   一   页   的   图   说   明   了   一   个   典   型   .bmp   文   件   的   结   构。   它   是   以   256   色   也   就   是   8-bpp   为   例   的,   文   件   被   分   成   四   个   主   要   的   部   分:   一   个   位   图   文   件   头,   一   个   位   图   信   息   头,   一   个   色   表   和   位   图   数   据   本   身。   位   图   文   件   头   包   含   关   于   这   个   文   件   的   信   息。   如   从   哪   里   开   始   是   位   图   数   据   的   定   位   信   息,   位   图   信   息   头   含   有   关   于   这   幅   图   象   的   信   息,   例   如   以   象   素   为   单   位   的   宽   度   和   高   度。   色   表   中   有   图   象   颜   色   的   rgb   值。   对   显   示   卡   来   说,   如   果   它   不   能   一   次   显   示   超   过   256   种   颜   色,   读   取   和   显   示   .bmp   文   件   的   程   序   能   够   把   这   些   rgb   值   转   换   到   显   示   卡   的   调   色   板   来   产   生   准   确   的   颜   色。    
   
          bmp   文   件   的   位   图   数   据   格   式   依   赖   于   编   码   每   个   象   素   颜   色   所   用   的   位   数。   对   于   一   个   256   色   的   图   象   来   说,   每   个   象   素   占   用   文   件   中   位   图   数   据   部   分   的   一   个   字   节。   象   素   的   值   不   是   rgb   颜   色   值,   而   是   文   件   中   色   表   的   一   个   索   引。   所   以   在   色   表   中   如   果   第   一   个   r/g/b   值   是   255/0/0,   那   么   象   素   值   为   0   表   示   它   是   鲜   红   色,   象   素   值   按   从   左   到   右   的   顺   序   存   储,   通   常   从   最   后   一   行   开   始。   所   以   在   一   个   256   色   的   文   件   中,   位   图   数   据   中   第   一   个   字   节   就   是   图   象   左   下   角   的   象   素   的   颜   色   索   引,   第   二   个   就   是   它   右   边   的   那   个   象   素   的   颜   色   索   引。   如   果   位   图   数   据   中   每   行   的   字   节   数   是   奇   数,   就   要   在   每   行   都   加   一   个   附   加   的   字   节   来   调   整   位   图   数   据   边   界   为   16   位   的   整   数   倍。    
   
          并   不   是   所   有   的   bmp   文   件   结   构   都   象   表   中   所   列   的   那   样,   例   如   16   和   24-bpp,   文   件   就   没   有   色   表,   象   素   值   直   接   表   示   rgb   值,   另   外   文   件   私   有   部   分   的   内   部   存   储   格   式   也   是   可   以   变   化   的。   例   如,   在   16   和   256   色   .bmp   文   件   中   的   位   图   数   据   采   用   rle   算   法   来   压   缩,   这   种   算   法   用   颜   色   加   象   素   个   数   来   取   代   一   串   颜   色   相   同   的   序   列,   而   且,   windows   还   支   持   os/2   下   的   .bmp   文   件,   尽   管   它   使   用   了   不   同   的   位   图   信   息   头   和   色   表   格   式。  
  Top

2 楼jinbing(若晴)回复于 2002-05-28 19:04:07 得分 0

在坛子里搜索一下,有很多资料.Top

3 楼stanely(俺是邢她汉子)回复于 2002-05-30 15:48:28 得分 0

msdn里面的很详细Top

4 楼laughcry2002(LaughCry)回复于 2002-06-23 22:21:59 得分 10

BMP文件结构  
   
  BMP文件组成  
  BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。    
  BMP文件头  
  BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。    
  其结构定义如下:  
  typedef   struct   tagBITMAPFILEHEADER  
  {  
  WORDbfType;   //   位图文件的类型,必须为BM  
  DWORD   bfSize;   //   位图文件的大小,以字节为单位    
  WORDbfReserved1;   //   位图文件保留字,必须为0  
  WORDbfReserved2;   //   位图文件保留字,必须为0  
  DWORD   bfOffBits;   //   位图数据的起始位置,以相对于位图  
  //   文件头的偏移量表示,以字节为单位  
  }   BITMAPFILEHEADER;  
   
   
  3.   位图信息头  
   
   
  BMP位图信息头数据用于说明位图的尺寸等信息。  
  typedef   struct   tagBITMAPINFOHEADER{  
  DWORD   biSize;   //   本结构所占用字节数  
  LONGbiWidth;   //   位图的宽度,以像素为单位  
  LONGbiHeight;   //   位图的高度,以像素为单位  
  WORD   biPlanes;   //   目标设备的级别,必须为1  
  WORD   biBitCount//   每个像素所需的位数,必须是1(双色),  
  //   4(16色),8(256色)或24(真彩色)之一  
  DWORD   biCompression;   //   位图压缩类型,必须是   0(不压缩),  
  //   1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一  
  DWORD   biSizeImage;   //   位图的大小,以字节为单位  
  LONGbiXPelsPerMeter;   //   位图水平分辨率,每米像素数  
  LONGbiYPelsPerMeter;   //   位图垂直分辨率,每米像素数  
  DWORD   biClrUsed;//   位图实际使用的颜色表中的颜色数  
  DWORD   biClrImportant;//   位图显示过程中重要的颜色数  
  }   BITMAPINFOHEADER;  
   
   
  4.   颜色表  
   
    颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:  
  typedef   struct   tagRGBQUAD   {  
  BYTErgbBlue;//   蓝色的亮度(值范围为0-255)  
  BYTErgbGreen;   //   绿色的亮度(值范围为0-255)  
  BYTErgbRed;   //   红色的亮度(值范围为0-255)  
  BYTErgbReserved;//   保留,必须为0  
  }   RGBQUAD;  
  颜色表中RGBQUAD结构数据的个数有biBitCount来确定:  
  当biBitCount=1,4,8时,分别有2,16,256个表项;  
  当biBitCount=24时,没有颜色表项。  
  位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:  
  typedef   struct   tagBITMAPINFO   {  
  BITMAPINFOHEADER   bmiHeader;   //   位图信息头  
  RGBQUAD   bmiColors[1];   //   颜色表  
  }   BITMAPINFO;  
   
   
  5.   位图数据  
    位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:  
  当biBitCount=1时,8个像素占1个字节;  
  当biBitCount=4时,2个像素占1个字节;  
  当biBitCount=8时,1个像素占1个字节;  
  当biBitCount=24时,1个像素占3个字节;  
  Windows规定一个扫描行所占的字节数必须是  
  4的倍数(即以long为单位),不足的以0填充,  
  一个扫描行所占的字节数计算方法:  
  DataSizePerLine=   (biWidth*   biBitCount+31)/8;    
  //   一个扫描行所占的字节数  
  DataSizePerLine=   DataSizePerLine/4*4;   //   字节数必须是4的倍数  
  位图数据的大小(不压缩情况下):  
  DataSize=   DataSizePerLine*   biHeight;  
  Top

5 楼wistaria(听风听雨)回复于 2002-06-23 23:00:37 得分 0

http://www.csdn.net/dev/Format/Top

相关问题

  • bmp 文件格式 问题???????
  • 关于bmp文件格式
  • 谁能介绍一下BMP文件的具体格式,是什么结构,每个结构的长度等
  • 请问bmp文件的详细格式?
  • 求bmp文件格式转换方法
  • 如何显示BMP格式文件
  • 怎么把BMP格式文件转为JPEG,PNG,GIF等文件格式?
  • 怎样把BMP或JPG格式的文件转化为WMF格式的文件?
  • 怎么样使用C#把bmp格式文件转换成jpg格式文件?
  • 如何把bmp文件转换成jpg文件格式.

关键词

  • 文件
  • 结构
  • 像素
  • 数据
  • 图
  • bmp
  • 字节数
  • bibitcount
  • 表项
  • 颜色

得分解答快速导航

  • 帖主:airhand
  • xxjmz_78
  • laughcry2002

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo