fbpx
维基百科

zlib

zlib是一个用于資料壓縮函式庫,由Jean-loup Gailly與Mark Adler開發,初版0.9版发布于1995年5月1日。zlib使用抽象化的DEFLATE演算法,最初是為libpng函式庫所设计,後來逐渐被許多其他軟體使用。此函式庫為自由軟體,使用zlib授權许可。

zlib
首次发布0.9(1995年5月1日,​28年前​(1995-05-01
当前版本
  • 1.3 (2023年8月18日;穩定版本)[1]
源代码库
  • github.com/madler/zlib
编程语言C
操作系统跨平台
类型数据压缩
许可协议zlib授权
网站官方网站:
zlib.net
镜像网站:
http://www.gzip.org/zlib/(法国)
http://zlib.ipinfo.de/(德国)

截至2007年3月,zlib是包含在Coverity、由美国国土安全部赞助者选择继续审查的开源项目[2]

功能 编辑

数据头 编辑

zlib在压缩数据时支持使用gzip数据头(header)、zlib数据头或者不使用数据头。通常情况下,数据压缩使用zlib数据头,因为它提供了错误数据检测的功能。当数据不使用数据头写入时,由于没有任何错误检测的原始DEFLATE数据,那么解压缩的软件将无法得知压缩数据在什么地方结束。

gzip数据头比zlib数据头要大,因为它保存了文件名和其他文件系统信息——事实上,这等同于广泛使用的gzip文件的数据头格式。注意zlib函式库本身并不能创建一个gzip文件,但是它可以将压缩数据写入到一个现成的、具有gzip文件头的文件中。

演算法 编辑

截至2018年9月,zlib仅支持一个LZ77的变种算法,即DEFLATE的算法。

这个算法使用的系统资源很少,并且对各种数据都能提供很好的压缩效果。这种算法也由ZIP檔案所使用。(尽管zip文件格式也支持几种其他的算法)。

zlib的数据头理论上允许使用其他算法,但目前为止仍然只有这一种算法被使用。

使用资源 编辑

zlib提供了帮助控制CPU和内存资源使用的方法。通过设置不同的压缩级别数值,即可改变压缩率和压缩速度。

除此之外,zlib还提供了内存管理的功能,以便于在诸如嵌入式系统等资源较为受限的环境中使用。

策略 编辑

zlib的压缩算法可以针对特定类型的数据进行优化。

若使用者总是使用zlib压缩特定类型的数据,则可以选择有针对性的策略来提高压缩效率和性能。例如,如果使用者的数据包含很长的重复数据,那么可以用RLE(运行长度编码)策略进行优化。

对于一般的数据,默认策略往往是最佳的。

错误处理 编辑

当采用zlib或gzip数据头时,zlib可以检测并跳过压缩文件数据中的错误。

此外,如果全刷新点(full-flush points)被写入到压缩后的数据流中,那么zlib可以跳过损坏的数据并继续解压缩,并重新同步到下个全刷新点。(尽管zlib并不能纠正错误并修复损坏的数据)。全刷新点技术对于在不可靠的传输途径上的大数据流是很有用的,因为这种场景下丢失一些过去的数据很可能并没有太大影响(比如一些多媒体应用场景)。然而,建立太多的全刷新点会极大地影响速度和压缩率。

数据长度 编辑

zlib并没有对于压缩和解压缩数据长度的限制,通过重复调用库函数可以处理无限多的数据块。一些辅助代码(计数变量)可能会因此溢出,但是不影响实际的压缩和解压缩。当压缩一个较长或是无限长数据流时,最好写入全刷新点。

使用zlib的軟體 编辑

zlib已经成为了一种事实上的业界标准,以至于在标准文档中,zlib和DEFLATE常常被互换使用。数以千计的应用程序直接或间接依靠zlib压缩函式库[3],包括:

因为其代码的可移植性、宽松的授權许可以及较小的内存占用,zlib在许多嵌入式设备中也有应用。

参见 编辑

参考资料 编辑

    1. ^ "[Zlib-announce zlib 1.3 released"]; 作者姓名字符串: Adler, Mark; 出版日期: 2023年8月18日; 检索日期: 2023年8月18日.
    2. ^ , Coverity, 2007-03-27 [2007-12-10], (原始内容存档于2007-12-12) .
    3. ^ Gailly, Jean-loup; Adler, Mark, zlib Applications, 2002-04-18 [2009-01-18], (原始内容于2019-06-10) .

    外部連結 编辑

    zlib, 提示, 此条目的主题不是z, library或许可证, 此條目翻譯品質不佳, 2021年1月29日, 翻譯者可能不熟悉中文或原文語言, 也可能使用了機器翻譯, 請協助翻譯本條目或重新編寫, 并注意避免翻译腔的问题, 明顯拙劣的翻譯請改掛, href, template, html, class, redirect, title, template, href, wikipedia, html, class, redirect, title, wikipedia, 提交刪除, 是一个用于資料壓縮的函式庫,. 提示 此条目的主题不是Z Library或zlib许可证 此條目翻譯品質不佳 2021年1月29日 翻譯者可能不熟悉中文或原文語言 也可能使用了機器翻譯 請協助翻譯本條目或重新編寫 并注意避免翻译腔的问题 明顯拙劣的翻譯請改掛 a href Template D html class mw redirect title Template D d a a href Wikipedia CSD html G13 class mw redirect title Wikipedia CSD G13 a 提交刪除 zlib是一个用于資料壓縮的函式庫 由Jean loup Gailly與Mark Adler開發 初版0 9版发布于1995年5月1日 zlib使用抽象化的DEFLATE演算法 最初是為libpng函式庫所设计 後來逐渐被許多其他軟體使用 此函式庫為自由軟體 使用zlib授權许可 zlib首次发布0 9 1995年5月1日 28年前 1995 05 01 当前版本1 3 2023年8月18日 穩定版本 1 源代码库github wbr com wbr madler wbr zlib编程语言C操作系统跨平台类型数据压缩许可协议zlib授权网站官方网站 zlib net镜像网站 http www gzip org zlib 法国 http zlib ipinfo de 德国 截至2007年3月 zlib是包含在Coverity 由美国国土安全部赞助者选择继续审查的开源项目 2 目录 1 功能 1 1 数据头 1 2 演算法 1 3 使用资源 1 4 策略 1 5 错误处理 1 6 数据长度 2 使用zlib的軟體 3 参见 4 参考资料 5 外部連結功能 编辑数据头 编辑 zlib在压缩数据时支持使用gzip数据头 header zlib数据头或者不使用数据头 通常情况下 数据压缩使用zlib数据头 因为它提供了错误数据检测的功能 当数据不使用数据头写入时 由于没有任何错误检测的原始DEFLATE数据 那么解压缩的软件将无法得知压缩数据在什么地方结束 gzip数据头比zlib数据头要大 因为它保存了文件名和其他文件系统信息 事实上 这等同于广泛使用的gzip文件的数据头格式 注意zlib函式库本身并不能创建一个gzip文件 但是它可以将压缩数据写入到一个现成的 具有gzip文件头的文件中 演算法 编辑 截至2018年9月 zlib仅支持一个LZ77的变种算法 即DEFLATE的算法 这个算法使用的系统资源很少 并且对各种数据都能提供很好的压缩效果 这种算法也由ZIP檔案所使用 尽管zip文件格式也支持几种其他的算法 zlib的数据头理论上允许使用其他算法 但目前为止仍然只有这一种算法被使用 使用资源 编辑 zlib提供了帮助控制CPU和内存资源使用的方法 通过设置不同的压缩级别数值 即可改变压缩率和压缩速度 除此之外 zlib还提供了内存管理的功能 以便于在诸如嵌入式系统等资源较为受限的环境中使用 策略 编辑 zlib的压缩算法可以针对特定类型的数据进行优化 若使用者总是使用zlib压缩特定类型的数据 则可以选择有针对性的策略来提高压缩效率和性能 例如 如果使用者的数据包含很长的重复数据 那么可以用RLE 运行长度编码 策略进行优化 对于一般的数据 默认策略往往是最佳的 错误处理 编辑 当采用zlib或gzip数据头时 zlib可以检测并跳过压缩文件数据中的错误 此外 如果全刷新点 full flush points 被写入到压缩后的数据流中 那么zlib可以跳过损坏的数据并继续解压缩 并重新同步到下个全刷新点 尽管zlib并不能纠正错误并修复损坏的数据 全刷新点技术对于在不可靠的传输途径上的大数据流是很有用的 因为这种场景下丢失一些过去的数据很可能并没有太大影响 比如一些多媒体应用场景 然而 建立太多的全刷新点会极大地影响速度和压缩率 数据长度 编辑 zlib并没有对于压缩和解压缩数据长度的限制 通过重复调用库函数可以处理无限多的数据块 一些辅助代码 计数变量 可能会因此溢出 但是不影响实际的压缩和解压缩 当压缩一个较长或是无限长数据流时 最好写入全刷新点 使用zlib的軟體 编辑zlib已经成为了一种事实上的业界标准 以至于在标准文档中 zlib和DEFLATE常常被互换使用 数以千计的应用程序直接或间接依靠zlib压缩函式库 3 包括 Linux核心 使用zlib以實作網路協定的壓縮 檔案系統的壓縮以及開機時解壓縮自身的核心 libpng 用于PNG图形格式的一个实现 对bitmap数据规定了DEFLATE作为流压缩方法 Apache 使用zlib實作http 1 1 OpenSSH OpenSSL 以zlib達到最佳化加密網路傳輸 FFmpeg 以zlib讀寫Matroska等以DEFLATE演算法壓縮的多媒體串流格式 rsync 以zlib最佳化遠端同步時的傳輸 Subversion Git和CVS等版本控制系统 使用zlib来压缩和远端仓库的通讯流量 dpkg和RPM等包管理软件 以zlib解壓縮RPM或者其他封包 因为其代码的可移植性 宽松的授權许可以及较小的内存占用 zlib在许多嵌入式设备中也有应用 参见 编辑 nbsp 自由软件主题 nbsp Free software主题 gzip DEFLATE RFC 1950 RFC 1951 RFC 1952 LZ77 ZIP 文件格式 参考资料 编辑自由軟體鑄造場 Zlib announce zlib 1 3 released 作者姓名字符串 Adler Mark 出版日期 2023年8月18日 检索日期 2023年8月18日 Press release Critical Open Source Software Projects Receive 6 000 Bug Fixes in First Year of Coverity Scan Site Coverity 2007 03 27 2007 12 10 原始内容存档于2007 12 12 Gailly Jean loup Adler Mark zlib Applications 2002 04 18 2009 01 18 原始内容存档于2019 06 10 外部連結 编辑zlib官方網站 页面存档备份 存于互联网档案馆 php zlib使用方法 取自 https zh wikipedia org w index php title Zlib amp oldid 78982301, 维基百科,wiki,书籍,书籍,图书馆,

    文章

    ,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。