欢迎来到天天文库
浏览记录
ID:32808611
大小:54.19 KB
页数:4页
时间:2019-02-15
《基于哈夫曼的图片压缩》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、^pragmaonce#inelude#inelude#includeusingnamespacestd;structBitmapFileHeader{WORDbmpHeader;//文件头“BM”DWORDfileSize;//文件大小,字节为单位WORDreservedWordl;//文件保留字1必为0WORDreservedWord2;//文件保留字2必为0DWORDoffSet;//位图数据起始位置};structBitmapFilelnfo{DWORDbmpInfoSi
2、ze;//即本结构所占的大小为28即4字节LONGbmpWidth;//位图的宽度LONGbmpHeight;//位图的高度WORDbmpPlanes;//目标设备的级别(必须为1)WORDbmpBitCount;//每个像素的尾数,必须为1(双色)4(16色)8(256色)24(真彩)DWORDbmpCompression;//必为0(BI_RGB未压缩)1(BI_RLEB)2(BI_RLE4)DWORDbmpSizelmage;//位图的大小单位为字节LONGbmpXpe1sPerMeter://水平分辨率每米像素数LONGbmpY
3、pelsPerMeter;//垂直分辨率DWORDbmpColorUsed;//位图显示所需颜色数DWORDbmpColorImportant;//重要的颜色数若为0则都重要};classBMPbase{publie:BMPbase(constchar*fileName);"BMPbase();private:boolfileSuccess;//判断文件是否打开成功的标志boolfileCompression;//判断文件是否被压缩boolbmpFi.1eflag;//判断是否为BMP文件boo1bmpBitRight;//判断文件位数
4、是否正确BitmapFileHeaderbmpHeader;//bmp文件头BitmapFilelnfoBmpPic;//bmp文件基本信息BYTE*picPix;//图片数据数组public:boolisReadFileSuccess();boolisBmpFi1e();BitmapFileHeadergetBmpHedader();//获取文件头BitmapFilelnfogetBmpInfoO;//获取信息结构体boolisBmpBitRight();//获取位图是否正确boolisFi1eCompression();//获取文件
5、是否被压缩BYTE*getPicPixO;//获取颜色数组intpixNum;};BMPbase.cpp#include"stdafx.h"^include"BMPbase.h"BMPbase::BMPbase(constchar*MleName){fileSuccess二true;//初始化文件为成功打开bmpF订eflag=true;//初始化文件为BMP文件bmpBitRight二true;//初始化文件位数为正确fileCompression=true;//初始化文件为未压缩ifstreampicReader(fileName,
6、ios::binary);if(!pieReader){fileSuccess=false;//文件读取失败}else{picReader.read((char*)&bmpHeader.bmpHeader,sizeof(WORD));if(bmplleader.bmpHeader!=0x4D42){bmpFileflag=false;//文件读取失败,类型不一致}else//开始读取文件信息{picReader.read((char*)&bmpHeader.fileSize,sizeof(DWORD));//读文件大小picReader
7、.read((char*)&bmpHeader.reservedWordl,sizeof(WORD));〃读取保留字picReader.read((char*)&bmpHeader.reservcdWord2,sizeof(WORD));//读取保留字/*if(bmpHeader.reservedWordl!=0x00
8、
9、bmpHeader.reservedWord2!=0x00)//判断文件保留字是否正确{fileSuccess=false;//文件读取失败}*/picReader.read((char*)&binpHeader.of
10、fSet,sizeof(DWORD));〃读取偏移量picReader.read((char*)&BmpPic.bmpTnfoSize,sizeof(DWORD));/*if(BmpPic.bmplnfoS
此文档下载收益归作者所有