新·bmp图像压缩算法详细解析.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
问题:将一张bmp图像的灰度值压缩存储到一个中间文件,然后利用中间文件还原这张图片。 初一看,这应该是两个程序吧,一个压缩程序一个解压程序。那就先压缩好喽,恩,压缩...可是要怎么读取它的灰度值呀?文件里不会只保存它的灰度值吧,点开属性,发现这是一张256*192的图片,如果图片文件里只有灰度值,那么大小应该是256*192 B,而实际大小是50230字节。。可见还有其它信息,根据经验,应该还有一个对图像的描述信息吧,这样那些图像显示程序才能知道以怎样的方式去显示它,毕竟不是所有的bmp图片都是灰度图片。额,只好求助百度了.............经过整理,我把bmp图像编码格式发到下面。 BMP文件被分成4个部分:位图文件头(Bitmap File Header)、位图信息(BitmapInfoHeader)、颜色表(Color Map)和位图数据(即图像数据,Data Bits或Data Body) 第1部分为位图文件头BITMAPFILEHEADER,是一个结构体类型,该结构的长度是固定的,为14个字节。其定义如下: typedef struct tagBITMAPFILEHEADER { WORD bfType; 位图文件类型,必须是0x424D,即字符串“BM” DWORD bfSize; 位图文件大小,包括这14个字节。 WORD bfReserved1; Windows保留字,暂不用。 WORD bfReserved2; Windows保留字,暂不用。 DWORD bfOffBits; 从文件头到实际的位图数据的偏移字节数 } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER; 第2部分为位图信息头BITMAPINFOHEADER,也是一个结构体类型的数据结构,该结构的长度也是固定的,为40个字节(WORD为无符号16位整数,DWORD为无符号32位整数,LONG为32位整数)。其定义如下: typedef struct tagBITMAPINFOHEADER { DWORD biSize; 本结构的长度,为40个字节。 LONG biWidth; 位图的宽度,以像素为单位。 LONG biHeight; 位图的高度,以像素为单位. WORD biPlanes; 目标设备的级别,必须是1。 WORD biBitCount 每个像素所占的位数(bit),其值必须为1(黑白图像)、4(16色图)8 (256色)、24(真彩色图),新的BMP格式支持32位色。 DWORD biCompression; 位图压缩类型,有效的值为BI_RGB(未经压缩)、BI_RLE8、BI_RLE4、 BI_BITFILEDS(均为Windows定义常量)。这里只讨论未经压缩的情况, 即biCompression=BI_RGB。 DWORD biSizeImage; 实际的位图数据占用的字节数 LONG biXPelsPerMeter; 指定目标设备的水平分辨率,单位是像素/米。 LONG biYPelsPerMeter; 指定目标设备的垂直分辨率,单位是像素/米。 DWORD biClrUsed; 位图实际用到的颜色数,如果该值为零则用到的颜色数为2的biBitCount次幂。 DWORD biClrImportant; 位图显示过程中重要的颜色数,如果该值为零则认为所有的颜色都是重要的 } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER; 第3部分为颜色表。颜色表实际上是一个RGBQUAD结构的数组,数组的长度由biClrUsed指定(如果该值为零,则由biBitCount指定,即2的biBitCount次幂个元素)。RGBQUAD结构是一个结构体类型,占4个字节,其定义如下: typedef struct tagRGBQUAD { BYTE rgbBlu

文档评论(0)

xiaofei2001128 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档