A PNG formátum veszteségmentes, mivel van egy tömörítési paramétere?

Állítólag a PNG formátum veszteségmentes formátumú, de amikor egy képet PNG fájlként ment el, a rendszer megkéri, hogy válasszon tömörítési szintet. Ez azt jelenti, hogy a PNG formátum valójában mégsem veszteségmentes? A mai SuperUser Q & A bejegyzés segít tisztázni a zavart egy kíváncsi olvasó számára.

A mai Kérdések és válaszok a SuperUser jóvoltából érkeznek hozzánk - a Stack Exchange alosztályához, amely a Q & A webhelyek közösségvezérelt csoportosulása.

A kérdés

A SuperUser olvasó pkout tudni akarja, hogy a PNG-kép minőségét befolyásolja-e a kiválasztott tömörítési szint:

Tudomásom szerint a PNG fájlok veszteségmentes tömörítést használnak. Amikor azonban olyan képszerkesztőt használok, mint a Gimp, és megpróbálok PNG fájlként menteni egy képet, akkor 0 és 9 közötti tömörítési szintet kér.

Ha van egy tömörítési paramétere, amely befolyásolja a tömörített kép vizuális pontosságát, akkor hogyan veszteségmentes a PNG? Meg tudná valaki magyarázni ezt nekem? Csak akkor szoktam veszteségmentes viselkedést elérni, ha a tömörítési szintet 9-re állítom?

Van-e különbség a kép minőségében a választott tömörítési szinttől függően?

A válasz

A SuperUser közreműködői, LordNeckbeard és jjlin válaszolnak ránk. Először fel, LordNeckbeard:

A PNG tömörített, de veszteségmentes

A tömörítési szint kompromisszum a fájlméret és a kódolási / dekódolási sebesség között. A túl általánosítás érdekében még a nem képformátumok is, mint például a FLAC, hasonló fogalmakkal bírnak.

Különböző tömörítési szintek, azonos dekódolt kimenet

Bár a fájlméretek a különböző tömörítési szintek miatt különbözőek, a tényleges dekódolt kimenet azonos lesz. Az MD5 muxer segítségével összehasonlíthatja a dekódolt kimenetek MD5 kivonatait az ffmpeg-kel. Ez néhány példával a legjobban megmutatható.

Hozzon létre PNG fájlokat

  • Alapértelmezés szerint az ffmpeg a -compression_level 100 értéket fogja használni a PNG kimenethez.
  • Egy gyors, hanyag teszt azt mutatta, hogy a 100 (a legmagasabb tömörítési szint) ebben a példában nagyjából háromszor hosszabb kódolást, ötször hosszabb dekódolást igényelt, mint a 0 (a legalacsonyabb tömörítési szint).

Hasonlítsa össze a fájlméretet

Dekódolja a PNG fájlokat és mutassa meg az MD5 hasításokat

Mivel mindkét kivonat ugyanaz, biztos lehet benne, hogy a dekódolt kimenetek (a tömörítetlen nyers fájlok) pontosan megegyeznek.

Jjlin válasza:

A PNG veszteségmentes. A GIMP ebben az esetben valószínűleg nem a legjobb szövegválasztást használja.

Gondoljon erre a tömörítés minőségének vagy a tömörítés szintjének . Alacsonyabb tömörítéssel nagyobb fájlt kap, de kevesebb időbe telik, míg nagyobb tömörítés esetén kisebb fájlt kap, amelynek előállítása hosszabb ideig tart.

Általában csökkenő hozamot ér el, azaz a méret nem csökken annyira, mint az idő növekedése, amely a legmagasabb tömörítési szintre való feljutáshoz szükséges, de rajtad múlik.

Van valami hozzáfűzhető a magyarázathoz? Hang a kommentekben. Szeretne további válaszokat olvasni más, hozzáértő Stack Exchange-felhasználóktól? Nézze meg a teljes vitafonalat itt.