zlib用法简单说明

zlib用法简单说明 收藏
本文的目的是: 简单说明如何把zlib加入到MFC程序中,提供内存压缩功能.

1. 如何获得zlib

zlib的主页是:http://www.zlib.net/

2. 用VC++6.0打开

把下载的源代码解压打开,VC6.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的源代码时被好多宏吓倒了,呵呵,后来仔细看下去才发现原来接口那么简单. 至于那些英文说明也没想象中的那么难懂.只要有尝试的勇气,总能有些收获.

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hgreminem/archive/2009/07/05/4321322.aspx

### 回答1: zlib库是一个用于数据压缩和解压缩的开源库。它提供了一些函数和数据类型,可以用于在各种应用中进行数据压缩和解压缩的操作。以下是关于zlib库安装与使用的一些说明: 安装zlib库非常简单。首先,需要从官方网站(https://zlib.net/)下载zlib库的源代码。然后,在终端中进入解压后的文件夹,并执行以下命令: $ ./configure $ make $ sudo make install 这些命令将会编译并安装zlib库。请确保系统中已经安装了必要的编译工具(如gcc)。 安装完成后,就可以在自己的应用中使用zlib库了。首先,需要在源代码中包含zlib头文件: #include <zlib.h> 接下来,可以使用zlib库提供的函数进行压缩和解压缩的操作。最常用的函数包括: int compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); 这些函数可以分别用于压缩和解压缩数据。其中,dest是用于存储压缩或解压缩结果的缓冲区,destLen是dest缓冲区的大小,source是待压缩或解压缩的数据,sourceLen是source数据的大小。这些函数的返回值代表操作的结果,如果返回值为Z_OK,则表示操作成功。 除了上述基本函数外,zlib库还提供了一些其他函数和数据类型,用于更复杂的压缩和解压缩操作,如gzip文件的读写和压缩级别的设置等。具体的使用方法可以参考zlib库的官方文档和示例代码。 总结来说,zlib库是一个方便易用的数据压缩和解压缩库,可以通过简单的安装和使用步骤在应用中实现数据的高效压缩和解压缩操作。 ### 回答2: zlib库是一个开源的数据压缩库,可用于许多不同的应用程序中。它提供了一套简单而强大的API,用于在应用程序中进行数据的压缩和解压缩操作。下面是关于zlib库的安装和使用的简要介绍: 安装zlib库的步骤如下: 1. 下载zlib库的源代码包,官方网站提供了源码的下载链接。 2. 解压缩源码包到一个目录中。 3. 打开命令行终端,进入解压后的源码目录。 4. 运行配置脚本,执行以下命令:./configure 配置脚本将会根据系统的环境和设置自动选择一些编译选项。 5. 编译源代码,执行以下命令:make 这一步会根据配置生成相应的目标文件。 6. 安装生成的库文件和头文件,执行以下命令:sudo make install 这将会把库文件和头文件复制到系统中相应的目录,以便其他程序可以使用。 使用zlib库的步骤如下: 1. 在你的C/C++程序中包含zlib库的头文件:#include <zlib.h> 2. 声明一个z_stream结构体,这个结构体将被用来进行数据的压缩和解压缩操作。 3. 初始化z_stream结构体的成员变量,设置压缩或解压缩的参数,例如输入和输出的缓冲区等。 4. 调用zlib库中提供的函数进行压缩或解压缩操作。 对于压缩操作,可使用函数:int deflate(&stream, Z_FINISH) 对于解压缩操作,可使用函数:int inflate(&stream, Z_FINISH) 5. 根据返回值判断操作是否成功,并进行相应的处理。 6. 在程序结束时,释放相关资源,例如关闭文件指针,释放内存等。 总结一下,zlib库提供了方便易用的API,能够帮助我们实现数据的压缩和解压缩。通过简单的安装和使用步骤,我们可以轻松地在我们的应用程序中引入zlib库,并通过调用相应的函数进行数据的压缩和解压缩操作。 ### 回答3: zlib库是一个用于数据压缩和解压缩的C语言库。下面是关于zlib库的安装和使用的简要步骤: 1. 下载zlib库:可以从官方网站(https://www.zlib.net/)下载最新版本的zlib库,也可以使用包管理器(如apt、yum等)进行安装。 2. 解压缩zlib库:使用压缩工具(如WinRAR、7-Zip等)解压缩下载的zlib压缩文件。 3. 打开终端(命令提示符):在命令行界面下进入解压缩后的zlib目录。 4. 配置zlib库:运行configure命令,该命令会根据当前系统环境生成相应的Makefile,用于编译和安装zlib库。 5. 编译zlib库:运行make命令,该命令会根据Makefile文件编译zlib库。 6. 安装zlib库:运行make install命令,该命令将zlib库的文件复制到系统指定的目录下。 7. 在项目中使用zlib库:在项目中包含zlib.h头文件,并链接zlib库( z库一般通过-lz来链接)即可使用zlib库提供的函数进行数据压缩和解压缩的操作。 使用zlib库时,常用的函数有: - deflate():使用zlib库进行数据压缩。 - inflate():使用zlib库进行数据解压缩。 - compress():使用zlib库进行数据压缩,并产生gzip格式的压缩数据。 - uncompress():使用zlib库进行gzip格式的数据解压缩。 总结:zlib库是一个用于数据压缩和解压缩的C语言库,安装和使用步骤包括下载、解压缩、配置、编译和安装zlib库,以及在项目中包含头文件和链接库进行使用。常用函数包括deflate()、inflate()、compress()和uncompress()。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值