Onko PNG-muoto häviötön, koska sillä on pakkausparametri?

PNG-muodon oletetaan olevan häviötön muoto, mutta kun tallennat kuvan PNG-tiedostona, sinua pyydetään valitsemaan pakkaustaso. Tarkoittaako tämä, että PNG-muoto ei todellakaan ole häviötön loppujen lopuksi? Tämän päivän SuperUser Q & A -viesti auttaa selvittämään utelias lukijan hämmennystä.

Tämän päivän Kysymys- ja vastausistunto tulee meille SuperUser-yhteisöstään, joka on Stack Exchangen alaryhmä, yhteisöjohtoinen Q & A-verkkosivustojen ryhmittely.

Kysymys

SuperUser-lukija pkout haluaa tietää, vaikuttaako valittu pakkausaste PNG-kuvan laatuun:

Kuten ymmärrän, PNG-tiedostot käyttävät häviöttömää pakkausta. Kuitenkin, kun käytän kuvankäsittelyohjelmaa, kuten Gimp, ja yritän tallentaa kuvan PNG-tiedostona, se pyytää pakkaustasoa välillä 0-9.

Jos sillä on pakkausparametri, joka vaikuttaa pakatun kuvan visuaaliseen tarkkuuteen, miten PNG on sitten häviötön? Voisiko joku selittää tämän minulle? Saanko häviötöntä käyttäytymistä vain, kun asetan pakkaustasoksi 9?

Onko kuvan laadussa eroja valitsemastasi pakkaustasosta riippuen?

Vastaus

SuperUser-avustajilla LordNeckbeardilla ja jjlinillä on vastaus meille. Ensin ylös, LordNeckbeard:

PNG on pakattu, mutta häviötön

Pakkaustaso on kompromissi tiedostokoon ja koodauksen / dekoodauksen nopeuden välillä. Liian yleiseksi, jopa muilla kuin kuvamuotoilla, kuten FLAC, on samanlaiset käsitteet.

Eri pakkaustasot, sama dekoodattu lähtö

Vaikka tiedostokoot ovat erilaiset pakkaustasojen vuoksi, todellinen dekoodattu lähtö on identtinen. Voit verrata dekoodattujen lähtöjen MD5-hajautuksia ffmpeg: iin MD5-muxerin avulla. Tämä näkyy parhaiten muutamalla esimerkillä.

Luo PNG-tiedostoja

  • Oletusarvoisesti ffmpeg käyttää -compression_level 100 PNG-lähtöön.
  • Nopea, huolimaton testi osoitti, että 100 (korkein pakkaustaso) kesti suunnilleen kolme kertaa kauemmin koodauksessa ja viisi kertaa kauemmin kuin 0 (alin pakkaustaso) tässä esimerkissä.

Vertaa tiedostokokoa

Dekoodaa PNG-tiedostot ja näytä MD5-hajautukset

Koska molemmat hajautukset ovat samat, voit olla varma, että dekoodatut lähdöt (pakkaamattomat raakatiedostot) ovat täsmälleen samat.

Jjlinin vastaus:

PNG on häviötön. GIMP ei todennäköisesti käytä tässä tapauksessa parasta sanamuotoa.

Ajattele sitä pakkauksen laaduna tai pakkaustasona . Pienemmällä pakkauksella saat isomman tiedoston, mutta sen tuottaminen vie vähemmän aikaa, kun taas suuremmalla pakkauksella saat pienemmän tiedoston, jonka tuottaminen vie kauemmin.

Tyypillisesti saat pienenevän tuoton, ts. Ei niin paljon, että koko pienenee verrattuna ajan lisääntymiseen, joka kuluu noustessasi korkeimpiin pakkaustasoihin, mutta se on sinun tehtäväsi.

Onko sinulla jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta teknisesti taitavilta Stack Exchangen käyttäjiltä? Katso koko keskusteluketju täältä.