91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5.36MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-09-25
  • 語言: 其他
  • 標簽: 哈弗曼??

資源簡介

編譯環境vs,功能如題目所述對Bmp圖像進行哈弗曼編碼和解碼

資源截圖

代碼片段和文件信息

//?霍夫曼壓縮BMP文件.cpp?:?定義控制臺應用程序的入口點。
//

#include?“stdafx.h“


#include?
#include?
#include?
#include?“HuffmanCode.h“

using??namespace?std;

#define?BUF_LEN 4096

void?ShowHelp()
{
cout?<?“?< cout?<?“?< cout?<}

//?將buf中01串循環轉換為字符寫入文件,rBegin開始位置,end結束位置,len緩沖區長度
void?WriteToFile(FILE?*file?char?*buf?int?&rBegin?int?end?int?len)
{
int?d?=?end?-?rBegin;?//?差距
if?(d? {
d?+=?len;?//?end在begin之前,循環到前面位置了
}
d?=?d?/?8?*?8;?//?本次總共需要讀入的數據,每八位組成一個字節
if?(d?<=?0)
{
return;
}
unsigned?char?*wBuf?=?new?unsigned?char[d?/?8];
memset(wBuf?0?d?/?8);
int?c?=?0;?//?當前已經讀入的
unsigned?char?mark?=?0x80;
while?(c? {
if?(0?==?(c?%?8))
{
mark?=?0x80;
}
if?(‘1‘?==?buf[rBegin])
{
wBuf[c?/?8]?|=?mark;
}
mark?>>=?1;
c++;
rBegin++;
if?(rBegin?>=?len)
{
rBegin?=?0;
}
}
fwrite(wBuf?sizeof(char)?d?/?8?file);
}

//?將n以01串的形式寫入buf中
void?WriteByte(unsigned?char?n?char*?buf?int?&rBegin?int?len)
{
unsigned?char?m?=?0x80;
while?(m?>?0)
{
if?(0?==?(n?&?m))
{
buf[rBegin]?=?‘0‘;
}
else
{
buf[rBegin]?=?‘1‘;
}
rBegin++;
if?(rBegin?>=?len)
{
rBegin?=?0;
}
m?=?m?>>?1;
}
}

//?編碼
void?Code(char*?input?char*?output)
{
FILE?*file?=?fopen(input?“rb“);
if?(NULL?==?file)
{
cout?< return;
}
FILE?*outFile?=?fopen(output?“wb“);
if?(NULL?==?outFile)
{
cout?< fclose(file);
return;
}
CHuffmanCode?hfm;
unsigned?char?b[1024];?//?讀文件緩沖區
unsigned?long?fileLen?=?0;?//?文件大小
int?i;
//?直接讀入文件,統計字節信息。
//?也可以只讀圖像內容,但解碼還原時,如果是非24位位圖還需要記錄調色板信息,不如直接處理文件。
int?len?=?fread(b?sizeof(char)?1024?file);
while?(len?>?0)
{
fileLen?+=?len;
for?(i?=?0;?i? {
hfm.Add(b[i]);
}
len?=?fread(b?sizeof(char)?1024?file);
}
//?讀入完成,開始編碼
hfm.CreateCode();

char?buf[BUF_LEN];?//?緩沖區
int?wBegin?=?0;?//?寫入開始位置
int?rBegin?=?0;?//?讀取開始位置
//?生成新文件,文件格式為:4字節文件頭4字節原文件長度+不定長編碼表(256個[1字節[編碼長度-1]+編碼])+內容
buf[0]?=?‘H‘;
buf[1]?=?‘F‘;
buf[2]?=?‘M‘;
buf[3]?=?‘?‘;
//?寫入文件頭
fwrite(buf?sizeof(char)?4?outFile);
//?寫入長度
fwrite(&fileLen?sizeof(long)?1?outFile);
//?寫入編碼表
for?(i?=?0;?i? {
WriteByte((unsigned?char)(hfm.GetCodeLen(i)?-?1)?buf?wBegin?BUF_LEN);?//?將編碼長度-1寫入緩沖(長度范圍在1-256之間)
hfm.AppendCode(i?buf?wBegin?BUF_LEN);?//?將編碼寫入緩沖
WriteToFile(outFile?buf?rBegin?wBegin?BUF_LEN);?//?將緩沖寫入文件
}
fseek(file?0?SEEK_SET);?//?移動到頭從新開始讀
char?back[]?=?{?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?0?};
int?fileRead?=?0;
int?oldBfb?=?-1;?//?上次百分比
do{
len?=?fread(b?sizeof(char)?1024?file);
for?(i?=?0;?i? {
hfm.AppendCode(b[i]?buf?wBegin?BUF_LEN);?//?將編碼寫入緩沖
WriteToFile(outFile?buf?rBegin?wBegin?BUF_LEN);?//?將緩沖寫入文件
}
fileRead?+=?len;
if?(oldBfb?!=?((fileRea

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-05-21?18:28??Bmp編碼和解碼\
?????目錄???????????0??2014-05-21?18:27??Bmp編碼和解碼\Bmp編碼和解碼\
?????文件?????6574080??2014-05-21?18:28??Bmp編碼和解碼\Bmp編碼和解碼.sdf
?????文件?????????921??2014-05-21?17:59??Bmp編碼和解碼\Bmp編碼和解碼.sln
?????文件???????14848??2014-05-21?18:28??Bmp編碼和解碼\Bmp編碼和解碼.suo
?????文件????????6454??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Bmp編碼和解碼.cpp
?????文件????????4488??2014-05-21?18:10??Bmp編碼和解碼\Bmp編碼和解碼\Bmp編碼和解碼.vcxproj
?????文件????????1241??2014-05-21?18:02??Bmp編碼和解碼\Bmp編碼和解碼\Bmp編碼和解碼.vcxproj.filters
?????文件?????????143??2014-05-21?17:59??Bmp編碼和解碼\Bmp編碼和解碼\Bmp編碼和解碼.vcxproj.user
?????目錄???????????0??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\
?????文件?????????406??2014-05-21?18:10??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.exe.embed.manifest
?????文件?????????472??2014-05-21?18:10??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.exe.embed.manifest.res
?????文件?????????381??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.exe.intermediate.manifest
?????文件??????????65??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.lastbuildstate
?????文件????????5532??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.log
?????文件???????95263??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.obj
?????文件?????????206??2014-05-21?18:10??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼_manifest.rc
?????文件????????1310??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\cl.command.1.tlog
?????文件???????11568??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\CL.read.1.tlog
?????文件?????????990??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\CL.write.1.tlog
?????文件???????21728??2014-05-21?18:10??Bmp編碼和解碼\Bmp編碼和解碼\Debug\HuffmanCode.obj
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link-cvtres.read.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link-cvtres.write.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.1984-cvtres.read.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.1984-cvtres.write.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.1984.read.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.1984.write.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.5260-cvtres.read.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.5260-cvtres.write.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.5260.read.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.5260.write.1.tlog
............此處省略27個文件信息

評論

共有 條評論