30Aug

Er PNG-formatet Lossless siden det har en komprimeringsparameter?

click fraud protection

hvor-er-det-PNG-format-tapsfri-siden-den-har-en-kompresjons-parameter-00

PNG-formatet skal være et lossless format, men når du lagrer et bilde som en PNG-fil, blir du bedt om å velge et komprimeringsnivå.Betyr dette at PNG-formatet egentlig ikke er lossløst? Dagens SuperUser Q & A-innlegg hjelper med å fjerne forvirringen for en nysgjerrig leser.

Dagens Spørsmål &Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.

Spørsmålet

SuperUser leser pkout vil vite om kvaliteten på et PNG-bilde påvirkes av det valgte komprimeringsnivået:

Som jeg forstår, bruker PNG-filer lossless komprimering. Men når jeg bruker et bilderedigeringsprogram som Gimp og prøver å lagre et bilde som en PNG-fil, ber det om et komprimeringsnivå som varierer mellom 0 og 9.

Hvis det har en komprimeringsparameter som påvirker den visuelle presisjonen til komprimertbilde, hvordan er PNG tapsløs da? Kan noen forklare dette for meg? Får jeg bare lossless atferd når jeg stiller kompresjonsnivået til 9?

instagram viewer

Er det en forskjell i kvaliteten på bildet, avhengig av hvilket komprimeringsnivå du velger?

Svaret

SuperUser-bidragsytere LordNeckbeard og jjlin har svaret for oss. Først opp, LordNeckbeard:

PNG er komprimert, men Lossless

Kompresjonsnivået er et avvei mellom filstørrelse og koding / dekodingshastighet. For å overdrive generelt, har ikke-bildeformater som FLAC lignende begreper.

Ulike komprimeringsnivåer, Same Decoded Output

Selv om filstørrelsene er forskjellige på grunn av de forskjellige komprimeringsnivåene, vil den faktiske dekodede utgangen være identiske. Du kan sammenligne MD5-hashene til de dekodede utgangene med ffmpeg ved hjelp av MD5-muxeren. Dette er best vist med noen eksempler.

Opprett PNG-filer

hvor-er-det-PNG-format-tapsfri-siden-den-har-en-kompresjons-parameter-01

  • Som standard vil ffmpeg bruke -compression_level 100 for PNG-utgang.
  • En rask, slurvet test viste at 100( det høyeste komprimeringsnivået) tok omtrent tre ganger lengre tid til å kode og fem ganger lenger å dekode enn 0( det laveste komprimeringsnivået) i dette eksemplet.

Sammenlign filstørrelse

hvor-er-det-PNG-format-tapsfri-siden-den-har-en-kompresjons-parameter-02

Dekoder PNG-filene og vis MD5 Hashes

hvor-er-det-PNG-format-tapsfri-siden-den-har-en-kompresjons-parameter-03

Siden begge hashene er de samme, kan du være sikker på at de dekodede utgangene( de ukomprimerte råfilene) er nøyaktig det samme.

Etterfulgt av svaret fra jjlin:

PNG er lossless. GIMP sannsynligvis ikke bruker det beste valget av ordlyd i dette tilfellet.

Tenk på det som -komprimeringskvalitet eller -komprimeringsnivå .Med lavere komprimering får du en større fil, men det tar mindre tid å produsere, mens med høyere komprimering får du en mindre fil som tar lengre tid å produsere.

Vanligvis får du avtagende avkastning, det vil si ikke så mye reduksjon i størrelse sammenlignet med den økende tiden det tar når du går opp til de høyeste komprimeringsnivåene, men det er opp til deg.

Har du noe å legge til forklaringen? Lyder av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.