资源简介

几种常用的压缩算法本程序包含以下功能: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 < length; scount += block_size)
{
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个文件信息

评论

共有 条评论