您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>編譯器/仿真器>

EZW編碼器源代碼

大小:85 人氣: 2010-02-09 需要積分:0
{$username}的空間

用戶級別:注冊會員

貢獻(xiàn)文章:

貢獻(xiàn)資料:

EZW編碼器源代碼

該源代碼包含有6個文件:
EZW.H - EZW編碼器頭文件
EZW.C - EZW編碼器文件
MATRIX2D.H?? MATRIX2D.C - 編碼器數(shù)據(jù)結(jié)果定義和數(shù)據(jù)操作
FIFO.H? FIFO.C - 掃描方式定義:先入先出原則
LIST.H? LIST.C - 零樹結(jié)構(gòu)定義和操作
UNEZW.C - EZW解碼器
這里,讀者重點(diǎn)要掌握的是EZW.C和LIST.C中的內(nèi)容,充分理解零樹的概念。
--------------
EZW編碼器
#define debug
#include "ezw.h"
#include "fifo.h"
#include "list.h"
#include "matrix2d.h"
#include
#include
#include
//工作矩陣matrix_2d *M;
//誤差值char error;
//用于統(tǒng)計某一數(shù)據(jù)流中1和0的個數(shù)int zeroes, ones;
//編碼數(shù)據(jù)流的輸出文件FILE *ezw_file;
//輸出字節(jié)及編碼標(biāo)志位unsigned char output_byte, mask;
//建立一個數(shù)據(jù)流輸出的文件頭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++)
??{//進(jìn)行工作矩陣的賦值m->m[row][col] = example[row][col];
??}}}
/* * Puts a bit in the output stream.*/
void put_bit(char bit)
{//如果放入的比特為是1,統(tǒng)計1的個數(shù);反之統(tǒng)計0的個數(shù)
?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)
{//對于一個已經(jīng)量化且編碼后的數(shù)據(jù),來判斷它的類型。其類型有6種,正如在頭文件中定

非常好我支持^.^

(5) 100%

不好我反對

(0) 0%

EZW編碼器源代碼下載

相關(guān)電子資料下載

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?