Hjemmeside » hvordan » Er PNG-formatet Lossless siden det har en komprimeringsparameter?

    Er PNG-formatet Lossless siden det har en komprimeringsparameter?

    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 å rydde opp 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 det komprimerte bildet, hvordan er PNG så usløs? Kan noen forklare dette for meg? Får jeg bare lossless atferd når jeg stiller kompresjonsnivået til 9?

    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

    Komprimeringsnivået er en bytte mellom filstørrelse og koding / dekodingshastighet. For å generalisere, har ikke-bildeformater som FLAC lignende begreper.

    Forskjellige kompresjonsnivåer, samme dekodet utgang

    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.

    Lag PNG-filer

    • 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 for å kode og fem ganger lenger å dekode enn 0 (det laveste komprimeringsnivået) i dette eksemplet.

    Sammenlign filstørrelse

    Dekoder PNG-filene og vis MD5 Hashes

    Siden begge hashene er de samme, kan du være trygg 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 Kompresjonskvalitet eller nivå av kompresjon. 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 i forhold til økningen i 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.