您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>编译器/仿真器>

EZW编码器源代码

大小:85 人气: 2010-02-09 需要积分:0
{$username}的空间

用户级别:注册会员

贡献文章:

贡献资料:

EZW编码器源代码

该源代码包含有6个文件:
EZW.H - EZW编码器头文件
EZW.C - EZW编码器文件
MATRIX2D.H   MATRIX2D.C - 编码器数据结果定义和数据操作
FIFO.H  FIFO.C - 扫描方式定义:先入先出原则
LIST.H  LIST.C - 零树结构定义和操作
UNEZW.C - EZW解码器
这里,读者重点要掌握的是EZW.C和LIST.C中的内容,充分理解零树的概念。
--------------
EZW编码器
#define debug
#include "ezw.h"
#include "fifo.h"
#include "list.h"
#include "matrix2d.h"
#include
#include
#include
//工作矩阵matrix_2d *M;
//误差值char error;
//用于统计某一数据流中1和0的个数int zeroes, ones;
//编码数据流的输出文件FILE *ezw_file;
//输出字节及编码标志位unsigned char output_byte, mask;
//建立一个数据流输出的文件头ezw_file_header header;
void load_data(matrix_2d *m)
{ int row, col;
 for (row=0; row<8; row++)
 {for (col=0; col<8; col++)
  {//进行工作矩阵的赋值m->m[row][col] = example[row][col];
  }}}
/* * Puts a bit in the output stream.*/
void put_bit(char bit)
{//如果放入的比特为是1,统计1的个数;反之统计0的个数
 if (bit=='1')
 {output_byte |= mask;
  ones++;}
 else zeroes++; mask >>= 1;
  if (mask==0)
 {fwrite(&output_byte,sizeof(output_byte),1,ezw_file);
  output_byte = 0;  mask = 0x80; }}
/* * Puts dominant-pass and subordinate-pass codes in the output stream. */
void output_code(int code)
{//对于一个已经量化且编码后的数据,来判断它的类型。其类型有6种,正如在头文件中定

非常好我支持^.^

(5) 100%

不好我反对

(0) 0%

EZW编码器源代码下载

相关电子资料下载

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!