此程序使用动态规划的方法压缩位图,用MFC实现。可以压缩8位、16位、24位的位图。用进度条显示压缩、解压进度。
算法思想:
(1)对8、16、24位位图数据的读功能
有一个参数为输入位图文件名(*.bmp),它能解析8、16、24位位图文件格式,获取位图BITMAPINFOHEADER信息和每个像素的数据信息,放入内存中。
(2)对8、16、24位位图数据的写功能
有一个参数为输出位图文件名(*.bmp),它能将内存中的位图文件信息,按照位图格式,写到位图文件中保存。(输出位图文件名由压缩文件名(*.zj))
(3)灰度图像压缩功能,提供comp方法。
comp方法有一个参数为输出压缩文件名(*.zj) ,它能将已经装入到内存中的8、16、24位位图信息,进行压缩,形成段标题和以变长格式存储的像素的二进制串,写入到文件中(zj文件格式自行定义)。
(4)灰度图像解压功能,提供uncomp方法。
uncomp方法有一个参数为输入压缩文件名(*.zj),它能解析zj文件格式,将其在内存中解压缩为8位位图信息,以便输出为位图文件。
存储结构:
将3位的段内位长信息用拼字节的方法拼成一个UINT,将像素信息通过动态规划进行段内合并后用拼字节的方法拼成一个UINT,写入文件。
2021-06-03 14:51:25
1.11MB
动态规划
1