close

Zlib

Mergi la navigare Mergi la căutare


zlib
Componenta Info-ZIP
zlib-logo
Informatii generale
tip de program Comprimarea datelor
dezvoltator
  • Mark Adler
  • Jean Loup Gailly
lansarea inițială 01 mai 1995
Licență Licență Zlib
Informații tehnice
Programat în C
Versiuni
Ultima versiune stabilă 1.2.12 (27 martie 2022)
Legături

zlib este o bibliotecă de software folosită pentru compresia datelor . A fost scris de Jean-loup Gailly și Mark Adler și este o abstractizare a algoritmului de compresie DEFLATE utilizat în programul de comprimare a fișierelor gzip . zlib este, de asemenea, o componentă crucială a multor platforme software, inclusiv Linux, Mac OS X și iOS. De asemenea, a fost folosit în console de jocuri video, cum ar fi PlayStation 4 , PlayStation 3 , Wii U , Wii , Xbox One și Xbox 360.

Prima versiune publică a zlib, 0.9, a fost lansată pe 1 mai 1995 și a fost inițial destinată utilizării cu  biblioteca libpng . Este un software gratuit distribuit sub  Licența Zlib .

Capabilități

Încapsulare

Datele comprimate cu zlib sunt scrise de obicei de un wrapper gzip sau zlib. Wrapper-ul încapsulează datele brute DEFLATE adăugând un antet și o coadă. Aceasta oferă identificarea fluxului și detectarea erorilor care nu sunt furnizate în datele brute DEFLATE.

Antetul gzip, folosit omniprezent în formatul de fișier gzip, este mai mare decât antetul zlib, deoarece stochează numele fișierului și alte informații despre sistemul de fișiere.

Algoritm

Din septembrie 2018, zlib acceptă doar un algoritm, numit  DEFLATE , care este o variație a algoritmului LZ77 (Lempel–Ziv 1977). Acest algoritm oferă o compresie bună pe o mare varietate de date cu o utilizare minimă a resurselor sistemului. Este, de asemenea, algoritmul folosit în  formatul de arhivă ZIP .

Antetul permite alți algoritmi, dar în prezent niciunul nu este implementat.

Utilizarea resurselor

Zlib oferă facilități pentru monitorizarea procesului și a utilizării memoriei. Puteți specifica un parametru pentru creșterea vitezei în detrimentul compresiei. Utilizarea memoriei poate fi, de asemenea, limitată.

Strategie

Compresia poate fi optimizată pentru anumite date. Dacă utilizați date care mențin întotdeauna o anumită structură, utilizarea unei anumite strategii poate îmbunătăți raportul de compresie și performanța. De exemplu, dacă datele conțin lungimi mari de octeți repeți, strategia RLE ( codificare RLE ) poate da rezultate bune la viteză. Pentru datele generale, se preferă setările implicite.


Gestionarea erorilor

Erorile în datele comprimate pot fi detectate și omise. De asemenea, dacă punctele de spălare completă sunt scrise în fluxul comprimat, datele corupte pot fi sărite și decompresia va fi resincronizată la următorul punct de spălare completă, deși nu sunt furnizate mecanisme de recuperare a erorilor de date. Aceste tipuri de puncte sunt utile pentru fluxuri mari de date pe canale nesigure, unde unele pierderi de date nu sunt importante, cum ar fi în unele aplicații multimedia. Cu toate acestea, crearea prea multor dintre aceste „puncte de curgere” poate afecta viteza și raportul de compresie.

Lungimea datelor

Nu există limită pentru lungimea datelor care pot fi comprimate sau decomprimate. Apelurile repetate către bibliotecă permit un număr nelimitat de blocuri de date. Unele contoare pot suferi de depășirea tamponului, dar acest lucru nu afectează compresia sau decompresia.

Când setul de date este foarte mare (sau infinit), se recomandă în mod regulat să scrieți puncte „full-flush”.

Aplicații

Astăzi, zlib este un standard de facto , până la punctul în care zlib și DEFLATE sunt adesea folosite interschimbabil în documente, cu mii de aplicații bazându-se pe comprimarea sa, direct sau indirect. [ 1 ] Aceasta include:

  • La nucleul Linux , unde zlib este folosit pentru protocoale de rețea, sisteme de fișiere  și pentru a decomprima nucleul la pornirea sistemului de operare.
  • GNU Binutils și GNU Debugger (GDB)
  • libpng , implementarea de referință pentru formatul de imagine PNG, care specifică DEFLATE ca compresie pentru datele sale bitmap .
  • libwww, un API pentru aplicații web, cum ar fi  browserele web .
  • Serverul Apache HTTP , care folosește zlib pentru a implementa HTTP/1.1.
  • Clientul și serverul OpenSSH , care utilizează compresia oferită de protocolul Secure Shell în zlib.
  • Proiectele OpenSSL și GnuTLS , ambele pot folosi zlib pentru a comprima conexiunile TLS.
  • Biblioteca media  FFmpeg , care folosește zlib pentru a citi și scrie date în DEFLATE, cum ar fi Matroska .
  • Sincronizatorul de fișiere la distanță rsync, care utilizează zlib pentru a comprima datele.
  • Managerii de pachete dpkg și RPM , care folosesc zlib pentru a despacheta fișierele din pachetele software comprimate.
  • Sistemele de control al versiunilor  Subversion și CVS , ambele utilizând zlib pentru a comprima traficul către și dinspre arhivele de la distanță.
  • Sistemul de control al versiunii Git folosește zlib pentru a stoca conținutul obiectelor sale de date (blob-uri, arbori, comit-uri și etichete).
  • PostgreSQL RDBMS utilizează zlib ca format de export (pg_dump -Fc) pentru copiile de rezervă ale bazei de date.
  • Clasa .IO.Compression.DeflateStream din cadrul Microsoft .NET 2.0 sau mai recent. [ 2 ]
  • Utilitarul „deflate” din TORNADO ca parte a VxWorks , sistemul de operare realizat de Wind River Systems , folosește zlib pentru a comprima imaginea ROM de pornire.

zlib este, de asemenea, utilizat în multe dispozitive încorporate, cum ar fi Apple iPhone și  Sony PlayStation 3 , deoarece codul este portabil, licențiat liber și are o utilizare redusă a memoriei.

Vezi și

Referințe

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

Link- uri externe

  • site oficial
  • 1950—ZLIB ] Format de date comprimate
  • 1951—DEFLATE Format de date comprimate
  • 1952 - format de fișier GZIP
  • miniz.c , o implementare open source cu un singur fișier sursă a API-ului zlib pentru sisteme încorporate și utilizare limitată a memoriei