几种常用的压缩算法本程序包含以下功能:1、 Arithmetic coding编解码2、 Huffman coding编解码3、 LZ77 coding编解码4、 LZ78 coding 编解码5、 LZW 编解码6、 RLE 编解码7、 DCT 编解码8、 Furie transform
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5466 2005-09-02 16:15 CompressionCoder.dsp
文件 533 2005-09-02 15:51 CompressionCoder.dsw
文件 156672 2006-11-27 16:43 CompressionCoder.ncb
文件 2235 2006-11-14 18:02 CompressionCoder.plg
文件 606 2004-02-18 23:05 CompressionGeneric.h
文件 357 2004-04-08 21:12 Compressionmakefile
文件 152 2006-11-16 13:47 Compression
eadme.txt
文件 167 2005-09-04 11:31 Compression程序说明.txt
文件 10644 2006-11-10 18:28 Compressionmain.cpp
文件 262144 2006-11-26 19:20 Compressionlena.raw
文件 250461 2006-11-27 17:11 Compressionlena_e.raw
文件 263222 2006-11-26 19:24 Compressionlena.bmp
文件 251648 2006-11-26 19:23 Compressionlena_e.bmp
文件 427520 2006-11-27 16:43 CompressionCoder.opt
..A.SH. 9728 2007-07-02 10:46 CompressionThumbs.db
文件 59623 2004-04-08 20:47 Compressionincoder
文件 5576 2004-02-18 23:05 CompressionCodecArithmetic.cpp
文件 1639 2004-02-18 23:05 CompressionCodecArithmetic.h
文件 206 2004-02-18 23:05 CompressionCodecGendef.h
文件 10256 2004-04-08 21:12 CompressionCodecHuffman.cpp
文件 1526 2004-02-18 23:05 CompressionCodecHuffman.h
文件 3094 2004-02-28 00:00 CompressionCodecLZ77.cpp
文件 484 2004-02-18 23:05 CompressionCodecLZ77.h
文件 4783 2004-04-08 21:12 CompressionCodecLZ78.cpp
文件 1407 2004-02-18 23:05 CompressionCodecLZ78.h
文件 5107 2004-04-08 21:12 CompressionCodecLZW.cpp
文件 1463 2004-02-18 23:05 CompressionCodecLZW.h
文件 6685 2004-02-18 23:05 CompressionCodec
edblack.t
文件 1703 2004-02-18 23:05 CompressionCodecRLE.cpp
文件 337 2004-02-18 23:05 CompressionCodecRLE.h
............此处省略45个文件信息
#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
“ 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
“ 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
“ 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
“ 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 CompressionCoder.dsp
文件 533 2005-09-02 15:51 CompressionCoder.dsw
文件 156672 2006-11-27 16:43 CompressionCoder.ncb
文件 2235 2006-11-14 18:02 CompressionCoder.plg
文件 606 2004-02-18 23:05 CompressionGeneric.h
文件 357 2004-04-08 21:12 Compressionmakefile
文件 152 2006-11-16 13:47 Compression
eadme.txt
文件 167 2005-09-04 11:31 Compression程序说明.txt
文件 10644 2006-11-10 18:28 Compressionmain.cpp
文件 262144 2006-11-26 19:20 Compressionlena.raw
文件 250461 2006-11-27 17:11 Compressionlena_e.raw
文件 263222 2006-11-26 19:24 Compressionlena.bmp
文件 251648 2006-11-26 19:23 Compressionlena_e.bmp
文件 427520 2006-11-27 16:43 CompressionCoder.opt
..A.SH. 9728 2007-07-02 10:46 CompressionThumbs.db
文件 59623 2004-04-08 20:47 Compressionincoder
文件 5576 2004-02-18 23:05 CompressionCodecArithmetic.cpp
文件 1639 2004-02-18 23:05 CompressionCodecArithmetic.h
文件 206 2004-02-18 23:05 CompressionCodecGendef.h
文件 10256 2004-04-08 21:12 CompressionCodecHuffman.cpp
文件 1526 2004-02-18 23:05 CompressionCodecHuffman.h
文件 3094 2004-02-28 00:00 CompressionCodecLZ77.cpp
文件 484 2004-02-18 23:05 CompressionCodecLZ77.h
文件 4783 2004-04-08 21:12 CompressionCodecLZ78.cpp
文件 1407 2004-02-18 23:05 CompressionCodecLZ78.h
文件 5107 2004-04-08 21:12 CompressionCodecLZW.cpp
文件 1463 2004-02-18 23:05 CompressionCodecLZW.h
文件 6685 2004-02-18 23:05 CompressionCodec
edblack.t
文件 1703 2004-02-18 23:05 CompressionCodecRLE.cpp
文件 337 2004-02-18 23:05 CompressionCodecRLE.h
............此处省略45个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)