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

    Er PNG-formatet Lossless, da det har en komprimeringsparameter?

    PNG-formatet skal være et tabsløst format, 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 Q & A-indlæg hjælper med at rydde op for forvirringen for en nysgerrig læser.

    Dagens Spørgsmål & Svar session kommer til os med venlig hilsen af ​​SuperUser-en underafdeling af Stack Exchange, en community-driven gruppe af Q & A-websteder.

    Spørgsmålet

    SuperUser-læserpkout ønsker at vide, om kvaliteten af ​​et PNG-billede påvirkes af det valgte komprimeringsniveau:

    Som jeg forstår, bruger PNG-filer tabløs komprimering. Men når jeg bruger et billedredaktør som Gimp og forsøger at gemme et billede som en PNG-fil, beder den om et komprimeringsniveau på mellem 0 og 9.

    Hvis det har en komprimeringsparameter, der påvirker den visuelle præcision af det komprimerede billede, hvordan er PNG så tabsløs? Kan nogen forklare det her for mig? Får jeg kun tabsfri adfærd, når jeg indstiller kompressionsniveauet til 9?

    Er der en forskel i billedkvaliteten afhængigt af det kompressionsniveau du vælger?

    Svaret

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

    PNG er komprimeret, men lossless

    Kompressionsniveauet er et kompromis mellem filstørrelse og kodning / dekodningshastighed. For meget at generalisere, selv ikke-billedformater som FLAC har lignende begreber.

    Forskellige kompressionsniveauer, samme dekodet udgang

    Selv om filstørrelserne er forskellige på grund af de forskellige kompressionsniveauer, vil den faktiske dekodede udgang være identisk. Du kan sammenligne MD5-hashene i de afkodede udgange med ffmpeg ved hjælp af MD5-muxeren. Dette er bedst vist med nogle eksempler.

    Opret PNG-filer

    • Som standard vil ffmpeg bruge -compression_level 100 til PNG output.
    • En hurtig sløv test viste at 100 (det højeste kompressionsniveau) tog cirka tre gange længere tid til at kode og fem gange længere at afkode end 0 (det laveste kompressionsniveau) i dette eksempel.

    Sammenlign filstørrelse

    Afkode PNG-filerne og vis MD5 Hashes

    Da begge hashar er de samme, kan du være sikker på, at de afkodede udgange (de ukomprimerede råfiler) er nøjagtigt de samme.

    Efterfulgt af svaret fra jjlin:

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

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

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


    Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.