close

Zlib

Přejít na navigaci Přejít na hledání


zlib
Komponenta Info-ZIP
zlib-logo
Obecná informace
typ programu Komprese dat
vývojář
  • Mark Adler
  • Jean Loup Gailly
První vydání 1. května 1995
Licence Zlib licence
Technické informace
Naplánováno v C
Verze
Nejnovější stabilní verze 1.2.12 (27. března 2022)
Odkazy

zlib je softwarová knihovna používaná pro kompresi dat . Napsali jej Jean-loup Gailly a Mark Adler a je abstrakcí kompresního algoritmu DEFLATE používaného v programu pro kompresi souborů gzip . zlib je také klíčovou součástí mnoha softwarových platforem včetně Linuxu, Mac OS X a iOS. Byl také použit ve videoherních konzolích, jako je PlayStation 4 , PlayStation 3 , Wii U , Wii , Xbox One a Xbox 360.

První veřejná verze zlib, 0.9, byla vydána 1. května 1995 a byla původně určena pro použití s  ​​knihovnou libpng . Je to svobodný software šířený pod  licencí Zlib .

Schopnosti

Zapouzdření

Data komprimovaná zlib jsou obvykle zapsána obalem gzip nebo zlib. Obálka zapouzdří nezpracovaná data DEFLATE přidáním záhlaví a konce. To poskytuje identifikaci proudu a detekci chyb, které nejsou uvedeny v nezpracovaných datech DEFLATE.

Hlavička gzip, používaná všudypřítomně ve formátu souboru gzip, je větší než hlavička zlib, protože ukládá název souboru a další informace o souborovém systému.

Algoritmus

Od září 2018 podporuje zlib pouze jeden algoritmus nazvaný  DEFLATE , což je varianta algoritmu LZ77 (Lempel–Ziv 1977). Tento algoritmus poskytuje dobrou kompresi široké škály dat s minimálním využitím systémových prostředků. Je to také algoritmus používaný ve  formátu archivu ZIP .

Záhlaví umožňuje další algoritmy, ale v současné době žádný není implementován.

Využití zdrojů

Zlib poskytuje zařízení pro sledování využití procesoru a paměti. Můžete zadat parametr pro zvýšení rychlosti na úkor komprese. Využití paměti lze také omezit.

strategie

Kompresi lze optimalizovat pro určitá data. Pokud používáte data, která vždy zachovávají určitou strukturu, může použití specifické strategie zlepšit kompresní poměr a výkon. Pokud například data obsahují dlouhé délky opakovaných bajtů, může strategie RLE ( kódování RLE ) poskytnout dobré výsledky rychlosti. Pro obecná data jsou preferována výchozí nastavení.


Zpracování chyb

Chyby v komprimovaných datech lze detekovat a přeskočit. Pokud jsou do komprimovaného datového proudu zapsány body úplného vyprázdnění, mohou být poškozená data přeskočena a dekomprese bude znovu synchronizována v dalším bodu úplného vyprázdnění, ačkoli nejsou k dispozici žádné mechanismy pro obnovu dat. Tyto typy bodů jsou užitečné pro velké toky dat na nespolehlivých kanálech, kde ztráta dat není důležitá, jako například v některých multimediálních aplikacích. Vytváření příliš mnoha těchto „splachovacích bodů“ však může ovlivnit rychlost a kompresní poměr.

Délka dat

Neexistuje žádné omezení délky dat, která lze komprimovat nebo dekomprimovat. Opakovaná volání do knihovny umožňují neomezený počet datových bloků. Některé čítače mohou trpět přetečením vyrovnávací paměti, ale to neovlivňuje kompresi ani dekompresi.

Je-li datová sada velmi velká (nebo nekonečná), doporučuje se pravidelně zapisovat body „full-flush“.

Aplikace

Dnes je zlib de facto standardem do té míry, že zlib a DEFLATE se v dokumentech často používají zaměnitelně, přičemž na jeho kompresi přímo či nepřímo spoléhají tisíce aplikací. [ 1 ] To zahrnuje:

  • Do linuxového jádra , kde se zlib používá pro síťové protokoly, souborové systémy  a pro dekomprimaci jádra při zavádění operačního systému.
  • GNU Binutils a GNU Debugger (GDB)
  • libpng , referenční implementace pro obrazový formát PNG, který specifikuje DEFLATE jako kompresi pro svá bitmapová data .
  • libwww, API pro webové aplikace, jako jsou webové  prohlížeče .
  • Apache HTTP Server , který používá zlib k implementaci HTTP/1.1.
  • Klient a server OpenSSH , které využívají kompresi nabízenou protokolem Secure Shell ve zlib.
  • Projekty OpenSSL a GnuTLS , oba mohou používat zlib ke kompresi TLS připojení.
  • Knihovna médií  FFmpeg , která používá zlib ke čtení a zápisu dat do DEFLATE, jako je Matroska .
  • Vzdálený synchronizátor souborů rsync, který ke kompresi dat používá zlib.
  • Správci balíčků dpkg a RPM , kteří používají zlib k rozbalení souborů z komprimovaných softwarových balíčků.
  • Systémy pro správu verzí  Subversion a CVS , oba používají zlib ke kompresi provozu do a ze vzdálených repozitářů.
  • Systém správy verzí Git používá zlib k ukládání obsahu svých datových objektů (bloby, stromy, potvrzení a značky).
  • PostgreSQL RDBMS používá zlib jako exportní formát (pg_dump -Fc) pro zálohování databáze .
  • Třída .IO.Compression.DeflateStream z rozhraní Microsoft .NET 2.0 nebo vyšší. [ 2 ]
  • Nástroj "deflate" v TORNADO jako součást VxWorks , operačního systému vytvořeného společností Wind River Systems , používá zlib ke kompresi obrazu bootovací ROM.

zlib se také používá v mnoha vestavěných zařízeních, jako je Apple iPhone a  Sony PlayStation 3 , protože kód je přenosný, volně licencovaný a má nízké využití paměti.

Viz také

Reference

  1. Gailly, Jean-loup; Adler, Mark (18. dubna 2002), zlib Applications  .
  2. System.IO.Compression.DeflateStream . MSDNLibrary.

Externí odkazy