| lzw压缩算法的c语言实现 |
|
|
|
|
| 来源: 作者: 添加日期:2006-7-17 6:53:04 点击次数: |
|
buffer_create( &out ); stack_create(&stack );
while( load_buffer( h_sour, &in ) ) { if( first_run ) { lzw.prefix = get_next_code( &in, &lzw ); lzw.suffix = lzw.prefix; out_code(lzw.prefix, &out, &lzw , &stack); first_run = FALSE; } do_decode(&in , &out, &lzw, &stack); }
empty_buffer( &lzw,&out);
lzw_destory( &lzw ); buffer_destory( &in ); buffer_destory( &out ); stack_destory( &stack); }
#endif
2 下面给出一个应用上面模块的简单例子
#include <stdio.h> #include <stdlib.h> //------------------------------------------------------------------------------
#include "lzw.h" #include "hash.h" #include "fileio.h" #include "encode.h" #include "decode.h"
//------------------------------------------------------------------------------ HANDLE h_file_sour; HANDLE h_file_dest; HANDLE h_file; CHAR* file_name_in = "d:\\code.c"; CHAR* file_name_out= "d:\\encode.e"; CHAR* file_name = "d:\\decode.d";
//------------------------------------------------------------------------------ int main(int argc, char *argv[]) { h_file_sour = file_handle(file_name_in); h_file_dest = file_handle(file_name_out); h_file = file_handle(file_name);
encode(h_file_sour, h_file_dest); // decode(h_file_dest,h_file);
CloseHandle(h_file_sour); CloseHandle(h_file_dest); CloseHandle(h_file);
return 0; }
3 后语
之前研究gif文件格式时偶然接触了lzw压缩算法,于是就想自己动手实现。从一开始看人家的原码,然后跟着模仿,到现在用自己的语言表达出来,从理解原理到代码的实现花费了不少时间与精力,但是真正的快乐也就在这里,现在把她拿出来跟大家分享也就是分享快乐。 |
|
| |