Úvodná » ako » Je formát PNG Lossless, pretože má parameter kompresie?

    Je formát PNG Lossless, pretože má parameter kompresie?

    Formát PNG by mal byť bezstratový formát, ale keď uložíte obrázok ako súbor PNG, zobrazí sa výzva na výber úrovne kompresie. Znamená to, že formát PNG v skutočnosti nie je bezchybný? Dnešný príspevok SuperUser Q & A pomáha vyčistiť zmätok pre zvedavého čitateľa.

    Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.

    Otázka

    Čítačka SuperUser pkout chce vedieť, či je kvalita obrazu PNG ovplyvnená zvolenou úrovňou kompresie:

    Ako som to pochopil, súbory PNG používajú bezstratovú kompresiu. Keď však používam editor obrázkov, ako je napríklad Gimp a pokúsim sa uložiť obrázok ako súbor PNG, požiada o úroveň kompresie v rozmedzí od 0 do 9.

    Ak má parameter kompresie, ktorý ovplyvňuje vizuálnu presnosť komprimovaného obrázka, ako je PNG bezstratová? Môže mi to niekto vysvetliť? Mám bezstratové správanie iba keď nastavím úroveň kompresie na hodnotu 9?

    Existuje rozdiel v kvalite obrazu v závislosti od zvolenej úrovne kompresie?

    Odpoveď

    Príslušníci SuperUser LordNeckbeard a jjlin majú odpoveď pre nás. Prvýkrát, LordNeckbeard:

    PNG je komprimovaný, ale bez straty

    Úroveň kompresie je kompromis medzi veľkosťou súboru a rýchlosťou kódovania / dekódovania. Ak chcete príliš zovšeobecniť, aj iné formáty ako FLAC majú podobné pojmy.

    Rôzne úrovne kompresie, rovnaký dekódovaný výstup

    Hoci sú veľkosti súborov odlišné vzhľadom na rôzne úrovne kompresie, skutočný dekódovaný výstup bude identický. Môžete porovnať MD5 hash dekódovaných výstupov s ffmpeg pomocou MD5 muxer. Najlepšie je to s niektorými príkladmi.

    Vytvorte súbory PNG

    • V predvolenom nastavení ffmpeg použije hodnotu -compression_level 100 pre výstup PNG.
    • Rýchly a nepríjemný test ukázal, že 100 (najvyššia úroveň kompresie) trvalo zhruba trikrát dlhšie na kódovanie a päťkrát dlhšie na dekódovanie ako 0 (najnižšia úroveň kompresie) v tomto príklade.

    Porovnajte veľkosť súboru

    Dekódujte súbory PNG a ukážky MD5 Hashes

    Vzhľadom na to, že obidve hashové sú rovnaké, môžete si byť istí, že dekódované výstupy (nekomprimované nespracované súbory) sú úplne rovnaké.

    Nasledovala odpoveď od jjlin:

    PNG je bezztrátový. GIMP s najväčšou pravdepodobnosťou v tomto prípade nepoužíva najlepšiu voľbu znenia.

    Myslite na to ako kvalita kompresie alebo úroveň kompresie. S nižšou kompresiou získate väčší súbor, ale trvá to menej času na výrobu, zatiaľ čo pri vyššej kompresii dostanete menší súbor, ktorý trvá dlhšie.

    Zvyčajne sa vám znižuje návratnosť, t. J. Nie je toľko zníženie veľkosti v porovnaní s nárastom času, ktorý trvá, keď idete na najvyššiu úroveň kompresie, ale je na vás.


    Máte niečo doplniť vysvetlenie? Znie to v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.