30Aug

Je formát PNG bez ztráty, protože má parametr komprese?

click fraud protection

how-is-the-png-format-lossless-since-it-has-a-komprese-parametr-00

Formát PNG má být bezztrátový formát, ale pokud 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í otázka &Odpověď na zasedání se k nám dostala s laskavým svolením SuperUser - podřízenou výměnou Stack Exchange, skupině webů Q & A založených na komunitě.

Otázka

SuperUser reader pkout chce vědět, zda je kvalita obrazu PNG ovlivněna vybranou úrovní komprese:

Jak jsem pochopil, soubory PNG používají bezztrátovou kompresi. Když 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 souboruimage, jak je tedy 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 9?

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

instagram viewer

Odpovědí odpovědí

SuperUser LordNeckbeard a jjlin mají pro nás odpověď.První, LordNeckbeard: PNG

je komprimovaný, ale bez ztrát.

Úroveň komprese je kompromis mezi velikostí souboru a rychlostí kódování a 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í muxeru MD5.To je nejlépe znázorněno u některých příkladů.

Vytvoření PNG souborů

how-is-the-png-format-lossless-since-it-has-a-komprese-parametr-01

  • Ve výchozím nastavení bude ffmpeg používat pro výstup PNG hodnotu -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

how-is-the-png-format-lossless-since-it-has-a-komprese-parametr-02

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

jak-je-png-formát-lossless-since-it-has-a-komprese-parametr-03

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

Následující odpověď od jjlin:

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

Představte si to jako kvalitu 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.

Obvykle dochází ke zmenšujícím se výnosům, tj. Není tolik snížení velikosti ve srovnání s nárůstem času, který trvá, když jde o nejvyšší úroveň komprese, ale je na vás.

Musíte přidat něco k vysvětlení?Zní to 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.