1.用pc
平台 zlib
製作壓縮包
1.1.pc上安裝
zlib方法
進入 zlib-1.2.3
的目錄
#./cofignure
#make
#make install
1.2利用編譯好的可執行檔案
minigzip
生成壓縮包
#./minigzip filename
filename要生成壓縮檔案的檔名 ,會生成
filename.gz
,壓縮包製作完成
2.用裝置的編譯器生成 libz.a
見《zlib
移植經驗分享
.doc》
3.編寫裝置端的解壓縮程式
見《my_minigzip.c》
編譯的命令
#gcc -o my_minigzip minigzip.c libz.a
注:my_minigzip.c
,libz.a
,zlib.h
,zconf.h
要在同級目錄
2.zlib原始碼目錄下的
vc工程中
example.c和
minigzip.c
提供了示例用法
3.小兵張總回答關於
uncompress
解壓報錯的解決方法
open read compress write
open read uncompress write
uncompress的長度:你壓縮後的資料長度多少,這裡就應該給多少
壓縮包組成
前4位元組為壓縮資料的長度
功能:壓縮
引數:dest-----------壓縮緩衝
destlen------壓縮緩衝的大小,要足以容納壓縮後的資料
函式執行完後,此值變為壓縮後的大小
source---------待壓縮的內容
sourcelen-----帶壓縮內容的大小
返回:0------------------成功
非0--------------失敗
compress ((bytef *dest, ulongf *destlen,const bytef *source, ulong sourcelen));
4.zlib用法簡單說明
本文的目的是:
簡單說明如何把
zlib
加入到mfc
程式中,
提供記憶體壓縮功能
.1. 如何獲得
zlib
zlib的主頁是
:2. 用
vc++6.0
開啟的工程已經建好了,在
/projects/visualc6.
雙擊zlib.dsw,
可以在vc++6.0
中看到裡面有
3個工程
: zlib
是庫檔案
(編譯設定選中
win32 lib debug / release),
工程example
是如何使用
zlib.lib
的示例,
工程minigzip
是如何用
zlib
提供的函式讀寫
.gz檔案的示例
(*.gz
的檔案一般
linux
下比較常用
).3. 如何加入到我的工程
編譯好 zlib.lib 後,
你就得到了呼叫乙個靜態庫所需要的所有檔案了
(zlib.lib, zlib.h, zconf.h).
如何呼叫靜態庫不用我說了吧
.4. 用
zlib
能幹什麼
先來看看 zlib
都提供了那些函式
, 都在
zlib.h中,
看到一堆巨集不要暈
,其實都是為了相容各種編譯器和一些型別定義
.死死抓住那些主要的函式的原型宣告就不會受到這些東西的影響了
.關鍵的函式有那麼幾個:
(1)int compress (bytef *dest, ulongf *destlen, const bytef *source, ulong sourcelen);
把源緩衝壓縮成目的緩衝,
就那麼簡單
, 乙個函式搞定
(2) int compress2 (bytef *dest, ulongf *destlen,const bytef *source, ulong sourcelen,int level);
功能和上乙個函式一樣,
都乙個引數可以指定壓縮質量和壓縮數度之間的關係
(0-9)
不敢肯定這個引數的話不用太在意它
,明白乙個道理就好了
: 要想得到高的壓縮比就要多花時間
(3) ulong compressbound (ulong sourcelen);
計算需要的緩衝區長度.
假設你在壓縮之前就想知道你的產度為
sourcelen
的資料壓縮後有多大
, 可呼叫這個函式計算一下
,這個函式並不能得到精確的結果
,但是它可以保證實際輸出長度肯定小於它計算出來的長度
(4) int uncompress (bytef *dest, ulongf *destlen,const bytef *source, ulong sourcelen);
解壓縮(
看名字就知道了
:)(5) deflateinit() + deflate() + deflateend()
3個函式結合使用完成壓縮功能
,具體用法看
example.c
的 test_deflate()
函式.
其實 compress()
函式內部就是用這
3個函式實現的
(工程
zlib
的 compress.c 檔案)
(6) inflateinit() + inflate() + inflateend()
和(5)類似,
完成解壓縮功能
.(7) gz開頭的函式
. 用來操作
*.gz
的檔案,
和檔案stdio
呼叫方式類似
. 想知道怎麼用的話看
example.c
的 test_gzio() 函式,
很easy.
(8) 其他諸如獲得版本等函式就不說了
.總結:
其實只要有了
compress()
和uncompress()
兩個函式
,在大多數應用中就足夠了
.題外話:
我最初看到
zlib
的源**時被好多巨集嚇倒了,呵呵
,後來仔細看下去才發現原來介面那麼簡單
. 至於那些英文說明也沒想象中的那麼難懂
.只要有嘗試的勇氣
,總能有些收穫
.
zlib 1 2 5 使用手冊
序言 版本簡介 流資料結構 結構使用 常量基本方法 高階方法 輔助方法 gzip 檔案訪問方法 校驗方法 其他方法 序言 省略版本 define zlib version 1.2.5 define zlib vernum 0x1250簡介 zlib庫提供在記憶體中的壓縮和解壓縮函式,包括對未壓縮資料...
Mac Git簡單使用手冊
mac git簡單使用手冊 git簡單使用手冊 1.安裝git www.2cto.com 怎麼安裝git自行查閱資料 2.配置git 3.新建專案並初始化git庫 cd work work為專案根目錄 git init 執行初始化 成功時會提示initialized empty git reposi...
git簡單使用手冊
介紹簡單使用,以下命令均在專案根目錄下執行 clone git clone拉取 git pull rebase提交 git add git commit m 自定義comment git push origin master刪除錯誤 git rm delete.src git add git com...