Startpagina » hoe » Is het PNG-formaat verliesloos, omdat het een compressieparameter heeft?

    Is het PNG-formaat verliesloos, omdat het een compressieparameter heeft?

    Het PNG-formaat zou een verliesvrij formaat moeten zijn, maar wanneer u een afbeelding opslaat als een PNG-bestand, wordt u gevraagd een compressieniveau te kiezen. Betekent dit dat het PNG-formaat eigenlijk helemaal geen verlies is? De SuperUser Q & A-post van vandaag helpt om de verwarring voor een nieuwsgierige lezer op te helderen.

    De Question & Answer-sessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een gemeenschapsgedreven groep van Q & A-websites.

    De vraag

    SuperUser-lezer pkout wil weten of de kwaliteit van een PNG-afbeelding wordt beïnvloed door het gekozen compressieniveau:

    Zoals ik het begrijp, gebruiken PNG-bestanden compressie zonder verlies. Wanneer ik echter een afbeeldingseditor zoals Gimp gebruik en probeer een afbeelding op te slaan als een PNG-bestand, wordt gevraagd om een ​​compressieniveau tussen 0 en 9.

    Als het een compressieparameter heeft die de visuele precisie van de gecomprimeerde afbeelding beïnvloedt, hoe gaat PNG dan verloren? Kan iemand me dit alstublieft uitleggen? Krijg ik verliesloos gedrag alleen als ik het compressieniveau instelde op 9?

    Is er een verschil in de kwaliteit van de afbeelding, afhankelijk van het compressieniveau dat u kiest?

    Het antwoord

    Bijdragers van SuperUser LordNeckbeard en jjlin hebben het antwoord voor ons. Ten eerste, Lord Neckbeard:

    PNG is gecomprimeerd, maar verliesvrij

    Het compressieniveau is een afweging tussen bestandsgrootte en coderings- / decoderingssnelheid. Om overmatig te generaliseren, hebben zelfs niet-afbeeldingsindelingen zoals FLAC vergelijkbare concepten.

    Verschillende compressieniveaus, dezelfde gedecodeerde uitvoer

    Hoewel de bestandsgrootten anders zijn vanwege de verschillende compressieniveaus, is de daadwerkelijke gedecodeerde uitvoer identiek. U kunt de MD5-hashes van de gedecodeerde uitgangen vergelijken met ffmpeg met behulp van de MD5-muxer. Dit wordt het best weergegeven met enkele voorbeelden.

    Maak PNG-bestanden

    • Standaard gebruikt ffmpeg -compression_level 100 voor PNG-uitvoer.
    • Een snelle, slordige test toonde aan dat 100 (het hoogste compressieniveau) ongeveer driemaal langer duurde om te coderen en vijf keer langer om te decoderen dan 0 (het laagste compressieniveau) in dit voorbeeld.

    Vergelijk bestandsgrootte

    Decodeer de PNG-bestanden en toon MD5 hashes

    Aangezien beide hashes hetzelfde zijn, kunt u er zeker van zijn dat de gedecodeerde outputs (de niet-gecomprimeerde raw-bestanden) exact hetzelfde zijn.

    Gevolgd door het antwoord van jjlin:

    PNG is verliesvrij. GIMP gebruikt in dit geval waarschijnlijk niet de beste woordkeus.

    Zie het als kwaliteit van compressie of niveau van compressie. Bij lagere compressie krijgt u een groter bestand, maar het kost minder tijd om te produceren, terwijl bij een hogere compressie u een kleiner bestand krijgt dat langer nodig heeft om te produceren.

    Doorgaans krijgt u een afnemend rendement, d.w.z. niet zozeer een afname in grootte in vergelijking met de toename in tijd die het kost wanneer u naar de hoogste compressieniveaus gaat, maar het is aan u.


    Heb je iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk hier de volledige discussiethread.