30Aug

Este PNG Format Lossless deoarece are un parametru de compresie?

click fraud protection

cum-este-png format-lossless-Since-it-are-o-compresie-parametru-00

Formatul PNG trebuie să fie un format fără pierderi, dar când salvați o imagine ca fișier PNG, vi se cere să alegeți un nivel de compresie. Acest lucru înseamnă că formatul PNG nu este de fapt, fără pierderi, la urma urmei? Postul de astăzi SuperUser Q & A ajută la clarificarea confuziei pentru un cititor curios.

Întrebarea de astăzi &Sesiunea de răspuns vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.

Întrebarea

SuperUser cititor pkout vrea să știe dacă calitatea unei imagini PNG este afectată de nivelul de comprimare ales:

După cum am înțeles, fișierele PNG utilizează compresie fără pierderi. Cu toate acestea, când folosesc un editor de imagini, cum ar fi Gimp, și încerc să salvez o imagine ca fișier PNG, acesta cere un nivel de compresie cuprins între 0 și 9.

Dacă are un parametru de compresie care afectează precizia vizuală a comprimatuluiimagine, cum este PNG fără pierderi atunci? Poate cineva să-mi explice asta? Nu am comportament fără pierderi decât atunci când am setat nivelul de compresie la 9?

instagram viewer

Există o diferență în calitatea imaginii în funcție de nivelul de compresie pe care îl alegeți?

Răspunsul

Contribuitorii SuperUserilor LordNeckbeard și jjlin au răspunsul pentru noi.În primul rând, LordNeckbeard:

PNG este comprimat, dar fără pierderi

Nivelul de compresie este un compromis între dimensiunea fișierului și viteza de codare / decodare. Pentru a generaliza prea mult, formatele non-imagine, cum ar fi FLAC, au concepte similare.

Diferite nivele de compresie, aceeași ieșire decodificată

Deși dimensiunile fișierelor sunt diferite datorită diferitelor niveluri de compresie, ieșirea efectivă decodificată va fi identică.Puteți compara machetele MD5 ale ieșirilor decodate cu ffmpeg folosind muxerul MD5.Acest lucru este indicat cel mai bine cu câteva exemple.

Crearea fișierelor PNG

cum-este-png format-lossless-Since-it-are-o-compresie-parametru-01

  • În mod implicit, ffmpeg va folosi -compression_level 100 pentru ieșirea PNG.
  • Un test rapid și necorespunzător a arătat că 100( cel mai înalt nivel de compresie) a fost de aproximativ trei ori mai lung pentru a codifica și de cinci ori mai mult pentru a decoda decât 0( cel mai mic nivel de compresie) din acest exemplu.

Comparați dimensiunea fișierului

cum-este-png format-lossless-Since-it-are-o-compresie-parametru-02

Decodificați fișierele PNG și afișați hash-urile MD5

cum-este-png format-lossless-Since-it-are-o-compresie-parametru-03

Deoarece ambele hashes sunt aceleași, puteți fi siguri că ieșirile decodate( fișierele brute necomprimate) sunt exact aceleași.

Urmat de răspunsul de la jjlin: PNG

este fără pierderi. GIMP, cel mai probabil, nu folosește cea mai bună alegere de formulare în acest caz.

Gândiți-vă ca calitate de compresie sau nivel de compresie .Cu o compresie mai mică, obțineți un fișier mai mare, dar este nevoie de mai puțin timp pentru a produce, în timp ce cu o compresie mai mare obțineți un fișier mai mic care durează mai mult timp pentru a fi produs.

În mod obișnuit, obțineți randamente reduse, adică nu diminuarea dimensiunilor în comparație cu creșterea timpului necesar pentru a ajunge la cele mai ridicate niveluri de compresie, dar depinde de dvs.

Aveți ceva de adăugat la explicație? Sunați în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.