Ali je format PNG brez izgub, saj ima parameter stiskanja?

Oblika PNG naj bi bila oblika brez izgub, ko pa sliko shranite kot datoteko PNG, morate izbrati stopnjo stiskanja. Ali to pomeni, da format PNG dejansko ni brez izgub? Današnja objava vprašanj SuperUser pomaga razjasniti zmedo radovednemu bralcu.

Današnja seja vprašanj in odgovorov se nam je zahvalila SuperUser - pododdelek Stack Exchange, skupnost spletnih strani z vprašanji in odgovori, ki jo vodi skupnost.

Vprašanje

Bralnik SuperUser pkout želi vedeti, ali na kakovost slike PNG vpliva izbrana stopnja stiskanja:

Kot razumem, datoteke PNG uporabljajo stiskanje brez izgub. Ko pa uporabljam urejevalnik slik, kot je Gimp, in poskušam shraniti sliko kot datoteko PNG, zahteva stopnjo stiskanja med 0 in 9.

Če ima parameter stiskanja, ki vpliva na vizualno natančnost stisnjene slike, kako je potem PNG brez izgub? Ali mi lahko prosim nekdo to razloži? Ali se obnašam brez izgub le, ko stopnjo stiskanja nastavim na 9?

Ali je razlika v kakovosti slike odvisna od izbrane stopnje stiskanja?

Odgovor

Odgovor za nas imata sodelavca SuperUser LordNeckbeard in jjlin. Najprej, LordNeckbeard:

PNG je stisnjen, vendar brez izgub

Raven stiskanja je kompromis med velikostjo datoteke in hitrostjo kodiranja / dekodiranja. Če želimo preveč posploševati, imajo tudi ne-slikovni formati, kot je FLAC, podobne koncepte.

Različne stopnje stiskanja, enak dekodiran izhod

Čeprav so velikosti datotek različne zaradi različnih stopenj stiskanja, bodo dejansko dekodirani izhodi enaki. Lahko uporabite MD5 zgoščene dešifrirane izhode s ffmpeg z uporabo MD5 mešalnika. To najbolje pokažemo z nekaj primeri.

Ustvari datoteke PNG

  • Privzeto bo ffmpeg za izhod PNG uporabil -compression_level 100.
  • Hiter, površen test je pokazal, da je 100 (najvišja stopnja stiskanja) v tem primeru potrebovala približno trikrat dlje za kodiranje in petkrat dlje za dekodiranje od 0 (najnižja stopnja stiskanja).

Primerjaj velikost datoteke

Dekodirajte datoteke PNG in prikažite razpršena polja MD5

Ker sta obe zgoščeni enoti enaki, ste lahko prepričani, da so dekodirani izhodi (nestisnjene surove datoteke) popolnoma enaki.

Sledi odgovor jjlin:

PNG je brez izgub. GIMP v tem primeru najverjetneje ne uporablja najboljše izbire besedil.

Mislite na to kot na kakovost stiskanja ali stopnjo stiskanja . Z nižjim stiskanjem dobite večjo datoteko, vendar traja manj časa za izdelavo, medtem ko z višjim stiskanjem dobite manjšo datoteko, ki traja dlje časa.

Običajno dobite manjšo donosnost, tj. Ne toliko manjše velikosti v primerjavi s povečanjem časa, ki je potreben, ko grete do najvišjih stopenj stiskanja, vendar je odvisno od vas.

Bi morali kaj dodati k razlagi? Zvok v komentarjih. Bi radi prebrali več odgovorov drugih tehnično podkovanih uporabnikov Stack Exchange? Oglejte si celotno nit razprave tukaj.