资源简介
几种常用的压缩算法本程序包含以下功能: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个文件信息
- 上一篇:西门子S7-200运动控制库map
- 下一篇:OpenNI用户指南(中英对照版)
相关资源
- Huffman Compress 霍夫曼编码 压缩 解压缩
- 基于Huffman编码的压缩和解压缩小软件
- zw_lz77.zip
- huffman编码
- 算法分析与设计哈弗曼树问题
- 文本文件无失真压缩 Huffman
- LZ77数据无损压缩算法,可以直接运行
- Huffman测试文件.zip
- 数据结构课程设计——压缩软件Huff
- zw_LZ773.zip
- 基于Huffman树的文件压缩C源码
- jpeg压缩编码中的Huffman编码表
- 一个huffman压缩解压算法源码
- Quake3 自适应 Huffman 编码.pdf
- 两种遍历方法实现赫夫曼编码
- Huffman编码 Verilog代码
- Huffman编码、解码器的Verilog实现
- Huffman与Shannon-Fano编码实验报告
- 用Huffman编码实现文件压缩含代码
- huffman树的构造
- huffman.rar
- Huffman树及Huffman编码源程序+读取文件
- huffman图像压缩
- 哈夫曼树实现文件解压缩
- Huffman编码对英文文本的压缩和解压缩
- huffman编码对文件进行压缩和解压
- Huffman编码压缩二进制
- LZ78算法实现对任意字符串的压缩与解
评论
共有 条评论