/ / Er PNG-format tabt, da det har et kompressionsparameter?

Er PNG-format tabt, da det har et kompressionsparameter?

hvordan-er-det-png-format-tabsfri-siden-det-har-en-kompression-parameter-00

PNG-formatet antages at være et tabsløstformat, men når du gemmer et billede som en PNG-fil, bliver du bedt om at vælge et komprimeringsniveau. Betyder det, at PNG-formatet faktisk ikke er tabsløst? Dagens SuperUser spørgsmål og svar hjælper med at afhjælpe forvirringen for en nysgerrig læser.

Dagens spørgsmål & svar-session kommer til os med tilladelse fra SuperUser - en underafdeling af Stack Exchange, en samfundsdrevet gruppe af spørgsmål og svar på websteder.

Spørgsmålet

SuperUser-læser-pkout vil vide, om kvaliteten af ​​et PNG-billede påvirkes af det valgte komprimeringsniveau:

Som jeg forstår det, bruger PNG-filer tabsfrikompression. Når jeg imidlertid bruger en billedredigerer som Gimp og prøver at gemme et billede som en PNG-fil, beder den om et komprimeringsniveau mellem 0 og 9.

Hvis det har en komprimeringsparameter, der påvirkerden visuelle præcision af det komprimerede billede, hvordan er PNG så tabsløs? Kan nogen venligst forklare dette for mig? Får jeg tabsløs opførsel kun, når jeg indstiller komprimeringsniveauet til 9?

Er der forskel i billedets kvalitet afhængigt af det komprimeringsniveau, du vælger?

Svaret

SuperUser-bidragydere LordNeckbeard og jjlin har svaret for os. Først op, LordNeckbeard:

PNG er komprimeret, men uden tab

Komprimeringsniveauet er en afvejning mellem filstørrelse og kodning / dekodningshastighed. For overdreven at generalisere, har selv ikke-billedformater som FLAC lignende koncepter.

Forskellige komprimeringsniveauer, samme dekodede output

Selvom filstørrelserne er forskellige på grund afforskellige komprimeringsniveauer, den faktiske dekodede output vil være identisk. Du kan sammenligne MD5-hasherne for de dekodede udgange med ffmpeg ved hjælp af MD5-muxeren. Dette vises bedst med nogle eksempler.

Opret PNG-filer

hvordan-er-det-png-format-tabsfri-siden-det-har-en-kompression-parameter-01

  • Som standard bruger ffmpeg -compression_level 100 til PNG-output.
  • En hurtig, sjusket test viste, at 100 (det højeste komprimeringsniveau) tog omtrent tre gange længere tid at kode og fem gange længere at afkode end 0 (det laveste komprimeringsniveau) i dette eksempel.

Sammenlign filstørrelse

hvordan-er-det-png-format-tabsfri-siden-det-har-en-kompression-parameter-02

Afkode PNG-filer og Vis MD5 Hashes

hvordan-er-det-png-format-tabsfri-siden-det-har-en-kompression-parameter-03

Da begge hashes er de samme, kan du være sikker på, at de dekodede output (de ukomprimerede rå filer) er nøjagtig de samme.

Efterfulgt af svaret fra jjlin:

PNG er tabsløs. GIMP bruger sandsynligvis ikke det bedste valg af ordlyd i dette tilfælde.

Tænk på det som kvalitet af komprimering eller niveau af komprimering. Med lavere komprimering får du en større fil, men det tager mindre tid at producere, mens du med højere komprimering får en mindre fil, der tager længere tid at producere.

Typisk får du faldende afkast, dvs. ikke så meget fald i størrelse sammenlignet med den stigning i tid, det tager, når man går op til de højeste komprimeringsniveauer, men det er op til dig.


Har du noget at tilføje til forklaringen? Lyd fra i kommentarerne. Vil du læse flere svar fra andre teknisk-erfarne Stack Exchange-brugere? Se den fulde diskussionstråd her.