資源簡介
幾種常用的壓縮算法本程序包含以下功能:1、 Arithmetic coding編解碼2、 Huffman coding編解碼3、 LZ77 coding編解碼4、 LZ78 coding 編解碼5、 LZW 編解碼6、 RLE 編解碼7、 DCT 編解碼8、 Furie transform

代碼片段和文件信息
#include?“Codec/Huffman.h“
#include?“Codec/LZ77.h“
#include?“Codec/LZ78.h“
#include?“Codec/LZW.h“
#include?“Codec/Arithmetic.h“
#include?“Codec/RLE.h“
#include?“Generic.h“??
#include?“Fatal/Fatal.h“??
#include?
#include?
#include?
#include??????
#include?
#define BLOCK_SIZE 0x10000
#define?SIGNATURE “CODR“
DWORD block_size;
void?Encode(FILE?*s?FILE?*t?char?*sequence)???
{
int?i;
long?slen?tlen?scount?length?compressed?=?0;
BYTE?*source?*target;
BYTE?*signature?=?(BYTE*)SIGNATURE;?
compressed?+=?fwrite(signature?1?strlen((char*)signature)?t);
compressed?+=?fwrite(&block_size?1?sizeof(DWORD)?t);
fseek(s?0?SEEK_END);
length?=?ftell(s);
fseek(s?0?SEEK_SET);
for?(scount?=?0;?scount? {
source?=?new?BYTE[block_size];
slen?=?fread(source?1?block_size?s);
if?(!slen)
break;
for?(i?=?0;?sequence[i];?i++)
switch(tolower(sequence[i]))
{
case?‘a‘:
{
printf(“Encoding?Arithmetic?source?size?=?%4ld\n“?slen);
TGeneric?*ar?=?new?TGeneric;
tlen?=?ar->GetMaxEncoded(slen);
target?=?new?BYTE[tlen+1];
ar->Encode(target+1?tlen?source?slen);
if?(tlen)
{
target[0]?=?‘a‘;
delete?source;
source?=?target;
slen?=?tlen+1;
}?else
{
delete?target;
target?=?new?BYTE[slen+1];
target[0]?=?0;
memcpy(target+1?source?slen);
delete?source;
source?=?target;
slen++;
}
delete?ar;
}
break;
case?‘h‘:
{
printf(“Encoding?Huffman?source?size?=?%4ld\n“?slen);
TGeneric?*huf?=?new?TGeneric;
tlen?=?huf->GetMaxEncoded(slen);
target?=?new?BYTE[tlen+1];
huf->Encode(target+1?tlen?source?slen);
if?(tlen)
{
target[0]?=?‘h‘;
delete?source;
source?=?target;
slen?=?tlen+1;
}?else
{
delete?target;
target?=?new?BYTE[slen+1];
target[0]?=?0;
memcpy(target+1?source?slen);
delete?source;
source?=?target;
slen++;
}
delete?huf;
}
break;
case?‘7‘:
{
printf(“Encoding?LZ77?source?size?=?%4ld\n“?slen);
TGeneric?*lz?=?new?TGeneric;
tlen?=?lz->GetMaxEncoded(slen);
target?=?new?BYTE[tlen+1];
lz->Encode(target+1?tlen?source?slen);
if?(tlen)
{
target[0]?=?‘7‘;
delete?source;
source?=?target;
slen?=?tlen+1;
}?else
{
delete?target;
target?=?new?BYTE[slen+1];
target[0]?=?0;
memcpy(target+1?source?slen);
delete?source;
source?=?target;
slen++;
}
delete?lz;
}
break;
case?‘8‘:
{
printf(“Encoding?LZ78?source?size?=?%4ld\n“?slen);
TGeneric?*lz?=?new?TGeneric;
tlen?=?lz->GetMaxEncoded(slen);
target?=?new?BYTE[tlen+1];
lz->Encode(target+1?tlen?source?slen);
if?(tlen)
{
target[0]?=?‘8‘;
delete?source;
source?=?target;
slen?=?tlen+1
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5466??2005-09-02?16:15??Compression\Coder.dsp
?????文件????????533??2005-09-02?15:51??Compression\Coder.dsw
?????文件?????156672??2006-11-27?16:43??Compression\Coder.ncb
?????文件???????2235??2006-11-14?18:02??Compression\Coder.plg
?????文件????????606??2004-02-18?23:05??Compression\Generic.h
?????文件????????357??2004-04-08?21:12??Compression\makefile
?????文件????????152??2006-11-16?13:47??Compression\readme.txt
?????文件????????167??2005-09-04?11:31??Compression\程序說明.txt
?????文件??????10644??2006-11-10?18:28??Compression\main.cpp
?????文件?????262144??2006-11-26?19:20??Compression\lena.raw
?????文件?????250461??2006-11-27?17:11??Compression\lena_e.raw
?????文件?????263222??2006-11-26?19:24??Compression\lena.bmp
?????文件?????251648??2006-11-26?19:23??Compression\lena_e.bmp
?????文件?????427520??2006-11-27?16:43??Compression\Coder.opt
????..A.SH.??????9728??2007-07-02?10:46??Compression\Thumbs.db
?????文件??????59623??2004-04-08?20:47??Compression\bin\coder
?????文件???????5576??2004-02-18?23:05??Compression\Codec\Arithmetic.cpp
?????文件???????1639??2004-02-18?23:05??Compression\Codec\Arithmetic.h
?????文件????????206??2004-02-18?23:05??Compression\Codec\Gendef.h
?????文件??????10256??2004-04-08?21:12??Compression\Codec\Huffman.cpp
?????文件???????1526??2004-02-18?23:05??Compression\Codec\Huffman.h
?????文件???????3094??2004-02-28?00:00??Compression\Codec\LZ77.cpp
?????文件????????484??2004-02-18?23:05??Compression\Codec\LZ77.h
?????文件???????4783??2004-04-08?21:12??Compression\Codec\LZ78.cpp
?????文件???????1407??2004-02-18?23:05??Compression\Codec\LZ78.h
?????文件???????5107??2004-04-08?21:12??Compression\Codec\LZW.cpp
?????文件???????1463??2004-02-18?23:05??Compression\Codec\LZW.h
?????文件???????6685??2004-02-18?23:05??Compression\Codec\redblack.t
?????文件???????1703??2004-02-18?23:05??Compression\Codec\RLE.cpp
?????文件????????337??2004-02-18?23:05??Compression\Codec\RLE.h
............此處省略45個文件信息
- 上一篇:西門子S7-200運動控制庫map
- 下一篇:OpenNI用戶指南(中英對照版)
評論
共有 條評論