Domovská » jak » Je formát PNG Lossless, protože má kompresní parametr?

    Je formát PNG Lossless, protože má kompresní parametr?

    Formát PNG má být bezztrátový formát, ale když uložíte obrázek jako soubor PNG, budete vyzváni k výběru úrovně komprese. Znamená to, že formát PNG ve skutečnosti není bezztrátový? Dnešní příspěvek SuperUser Q & A pomáhá vyčistit zmatek pro zvědavého čtenáře.

    Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.

    Otázka

    Čtečka pkout SuperUser chce vědět, zda je kvalita obrazu PNG ovlivněna zvolenou úrovní komprese:

    Jak jsem to pochopil, soubory PNG používají bezztrátovou kompresi. Pokud však používám editor obrázků, jako je Gimp, a pokusím se uložit obrázek jako soubor PNG, požádá o úroveň komprese v rozmezí 0 až 9.

    Pokud má parametr komprese, který ovlivňuje vizuální přesnost komprimovaného obrazu, jaký je PNG bezztrátový? Může mi to někdo vysvětlit? Mám chování bez ztráty pouze když nastavím úroveň komprese na hodnotu 9?

    Existuje rozdíl v kvalitě obrazu v závislosti na zvolené úrovni komprese?

    Odpověď

    Příspěvky SuperUser LordNeckbeard a jjlin mají pro nás odpověď. První, LordNeckbeard:

    PNG je komprimovaný, ale bez ztrát

    Úroveň komprese je kompromisem mezi velikostí souboru a rychlostí kódování / dekódování. Příliš zobecněné, dokonce i ne-obrazové formáty jako FLAC mají podobné pojmy.

    Různé úrovně komprese, stejný dekódovaný výstup

    Přestože jsou velikosti souborů odlišné vzhledem k různým úrovním komprese, bude skutečný dekódovaný výstup shodný. Můžete porovnat hash MD5 dekódovaných výstupů s ffmpeg pomocí MD5 muxeru. To je nejlépe znázorněno u některých příkladů.

    Vytvoření souborů PNG

    • Ve výchozím nastavení ffmpeg použije pro výstup PNG -compression_level 100.
    • Rychlý, nepřesný test ukázal, že 100 (nejvyšší úroveň komprese) trvalo zhruba třikrát delší, než aby kódoval a pětkrát delší, aby dekódoval než 0 (nejnižší úroveň komprese) v tomto příkladu.

    Porovnejte velikost souboru

    Dekódujte soubory PNG a ukážky MD5 Hashes

    Vzhledem k tomu, že obě šifry jsou stejné, můžete si být jisti, že dekódované výstupy (nekomprimované nesprávné soubory) jsou přesně stejné.

    Následuje odpověď od jjlin:

    PNG je bezztrátový. GIMP s největší pravděpodobností v tomto případě nepoužívá nejlepší volbu formulace.

    Přemýšlejte o tom kvalita komprese nebo úroveň komprese. S nižší kompresí získáte větší soubor, ale produkuje méně času, zatímco při vyšší kompresi získáte menší soubor, který trvá déle k vytvoření.

    Typicky dochází ke zmenšujícím se výnosům, tj. Ne tak výraznému snížení velikosti ve srovnání s nárůstem času, který trvá, když se dostanete na nejvyšší úroveň komprese, ale je na vás.


    Musíte něco přidat k vysvětlení? Vyjměte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.