问题:将一张 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,也是一个结构体类型的数据结构,