30Aug
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 de verwarring voor een nieuwsgierige lezer op te helderen.
De vraag van vandaag &Antwoord sessie komt naar ons met dank aan SuperUser-een onderverdeling van Stack Exchange, een community-gestuurde groepering 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 gegevensverlies. Wanneer ik echter een afbeeldingseditor zoals Gimp gebruik en probeer een afbeelding als een PNG-bestand op te slaan, wordt gevraagd om een compressieniveau tussen 0 en 9.
Als het een compressieparameter heeft die de visuele precisie van de gecomprimeerde beïnvloedtbeeld, hoe gaat PNG dan verliesloos? 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
SuperUser-bijdragers LordNeckbeard en jjlin hebben het antwoord voor ons. Ten eerste, Lord Neckkeard:
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 verschillend zijn vanwege de verschillende compressieniveaus, zal de feitelijke gedecodeerde uitvoer identiek zijn. 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.
PNG-bestanden maken
- Standaard gebruikt ffmpeg -compression_level 100 voor PNG-uitvoer.
- Een snelle, slordige test toonde aan dat 100( het hoogste compressieniveau) in dit voorbeeld ongeveer driemaal langer duurde om te coderen en vijf keer langer om te decoderen dan 0( het laagste compressieniveau).
Bestandsgrootte vergelijken
De PNG-bestanden decoderen en MD5-hashes weergeven
Omdat beide hashes hetzelfde zijn, kunt u er zeker van zijn dat de gedecodeerde uitgangen( de niet-gecomprimeerde onbewerkte 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 -compressiekwaliteit of -compressieniveau .Bij een lagere compressie krijgt u een groter bestand, maar dit kost minder tijd om te produceren, terwijl bij een hogere compressie u een kleiner bestand krijgt dat langer nodig heeft om te produceren.
Normaal gesproken krijgt u een afnemend rendement, d.w.z. niet zoveel afname in grootte in vergelijking met de toename in tijd die nodig is om de hoogste compressieniveaus te bereiken, maar het is aan u.
Heeft u 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 de volledige discussiethread hier.