PNG-afbeelding (.png)
W3C StandaardPortable Network Graphics (PNG) is een royaltyvrij rasterafbeeldingsformaat dat verliesvrije datacompressie, geïndexeerde kleuren en variabele alfakanaaltransparantie ondersteunt.
PNG naar JPG converteren
Gratis PNG-naar-JPG-converter in uw browser. Converteer bestanden direct op uw apparaat.
PNG online comprimeren
Privé - bestanden verlaten uw apparaat niet
Inspecteren en metadata
Besturingssystemen en bestandsanalysators herkennen PNG-bestanden aan de hand van de eerste binaire bytesequentie:
Bestandshandtekening op byteniveau (magic bytes)
Besturingssystemen en bestandsanalysators herkennen PNG-bestanden aan de hand van de eerste binaire bytesequentie:
HEX-HANDTEKENING (OFFSET 0):
89 50 4E 47 0D 0A 1A 0AASCII-WEERGAVE: .PNG....
Standaardisatie: W3C Recommendation (1996) / ISO/IEC 15948:2004
Technische specificaties
| Containerarchitectuur | Op chunks gebaseerde binaire container met 4-byte CRC32-verificatie per chunk |
| Compressie | Deflate (LZ77 + Huffman-codering) met 5 voorspellende scanlinefilters (None, Sub, Up, Average, Paeth) |
| Bytevolgorde (endianness) | Big-Endian (netwerkbytevolgorde) voor chunklengten, afmetingen en CRC's |
| Kleurruimten | sRGB, Display P3, Geïndexeerd palet (1-8 bit), Grijstinten, Truecolor (24/48-bit) |
| Kanalen en structuur | RGB + Alpha (tot 16 bits per kanaal / 64-bit RGBA) |
| Maximale afmetingen | 2.147.483.647 x 2.147.483.647 pixels (gehele getallen zonder teken van 4 bytes) |
| Transparantie | Volledig variabel alfatransparantiekanaal van 8-bit / 16-bit |
| Streaming en progressief | Adam7 7-pass interlacing-algoritme maakt progressieve 2D-scanlinerendering mogelijk |
Technische vergelijkingsmatrix: PNG versus concurrenten
| Technisch kenmerk | PNG (Huidig) | WebP | AVIF | JPEG |
|---|---|---|---|---|
| Compressietype | Strikt verliesvrij (Deflate + 2D voorspellende filters) | Met verlies (VP8) en verliesvrij (VP8L) | Met verlies (AV1 intra) en verliesvrij | Uitsluitend met verlies (discrete cosinustransformatie) |
| Alfatransparantie | Volledig variabel alfakanaal van 8 bits of 16 bits | Alfakanaal van 8 bits ondersteund | Alfa van 8 bits, 10 bits of 12 bits ondersteund | Geen ondersteuning voor transparantiekanaal |
| Bestandsgrootte (foto's) | Vaak groter dan formaten met verlies voor foto's; de relatieve grootte verschilt per afbeelding en encoder | Kan kleiner zijn dan JPEG; resultaten verschillen per afbeelding en encoder | Kan kleiner zijn dan JPEG; resultaten verschillen per afbeelding en encoder | Gemiddeld (referentiepunt) |
| Bestandsgrootte (illustraties en UI) | Extreem compact voor schermafbeeldingen, lijntekeningen en tekst | Uitstekende verliesvrije modus | Goed, maar het coderen duurt langer | Slecht (produceert ringartefacten langs scherpe randen) |
| Browserondersteuning | Ondersteund door grote browsers; de beschikbaarheid hangt af van de browser en versie | Brede ondersteuning in veel huidige browsers; de dekking verschilt per versie en platform | Ondersteund door veel huidige browsers; de dekking verschilt per versie en platform | Brede ondersteuning; de beschikbaarheid verschilt per product en versie |
Veelvoorkomende beschadigingen en gids voor hex-herstel
De afbeeldingsweergave toont 'Fatal error: Not a valid PNG file' of weigert te openen.
Oorzaak: De eerste 8 bytes zijn gewijzigd door een ASCII-overdrachtsmodus (waarbij 0x0D 0x0A is verminkt tot 0x0A of 0x0D 0x0D 0x0A).
Herstel: Open het bestand in een hex-editor en controleer of de eerste 8 bytes overeenkomen met '89 50 4E 47 0D 0A 1A 0A'. Het herstellen van deze 8 headerbytes herstelt de afbeelding doorgaans.
pngcheck meldt 'CRC error in chunk IDAT' of de afbeelding wordt gedeeltelijk geladen met beschadigde onderste scanlines.
Oorzaak: Bitcorruptie in de gecomprimeerde zlib-gegevensstroom of een ongeldige CRC32-controlesom in een IDAT-chunk.
Herstel: Gebruik pngcheck -f of tools voor herstel van Deflate-streams om geldige CRC32-waarden te herberekenen, of decomprimeer de resterende scanlines tot aan het beschadigde blok.
De afbeelding wordt correct weergegeven in desktopprogramma's, maar werkt niet in iOS-applicaties.
Oorzaak: iOS verwacht het eigen CgBI-formaat van Apple met verwisselde bytevolgorde, of afwijkende kleurruimte-chunks.
Herstel: Normaliseer de afbeelding met 'pngcrush -revert-iphone-optimizations' om de standaard W3C RGBA-volgorde te herstellen.
Beveiligingsanalyse en aanvalsvectoren voor parsers
PNG wordt door veel besturingssystemen en applicaties ondersteund. Beveiligingsrisico's zijn onder meer uitputting van het geheugen van de decoder en kwaadaardige nevenchunks.
Bekende aanvalsvectoren
- Te grote tEXt- en zTXt-metadatachunks die in decoders zonder sandbox een denial-of-service door geheugentekort (Out-Of-Memory, OOM) veroorzaken.
- Buffer-overflowkwetsbaarheden in de heap in verouderde libpng-releases (bijvoorbeeld CVE-2015-8126 in png_set_PLTE).
- Decompressieaanvallen met 'pixel floods', waarbij een afbeelding met een klein bestand enorme afmetingen opgeeft (bijvoorbeeld 100.000 x 100.000 pixels).
- Steganografische exfiltratie waarbij versleutelde payloads worden verborgen in private nevenchunks (bijvoorbeeld eXIf of aangepaste chunktypen).
Aanbevolen beveiligingspraktijken: Valideer altijd de afmetingen van een afbeelding voordat u pixelbuffers in het geheugen toewijst. Verwijder niet-essentiële nevenchunks (eXIf, tEXt) uit uploads van gebruikers met een geheugenveilig opschoningsprogramma.
Historische oorsprong en mijlpalen
Belangrijkste voordelen
- PNG gebruikt verliesvrije compressie, dus het coderen van een ongewijzigde afbeelding introduceert geen compressieverlies; bewerkingen of kleurconversie kunnen nog steeds pixelwaarden wijzigen.
- Vloeiende alfatransparantie van 8 bits maakt naadloze overvloeiing op complexe achtergronden mogelijk.
- Gamma-correctie en chromaticiteits-chunks zorgen voor een consistente weergave op diverse monitoren.
Technische beperkingen
- Aanzienlijk grotere bestandsgroottes vergeleken met moderne formaten met verlies zoals WebP of AVIF voor fotografische inhoud.
- Geen ingebouwde animatie met meerdere frames in standaard PNG (vereist de APNG-extensie).
- Een hoge bitdiepte (16 bits per kanaal) zorgt voor enorm grote, ongecomprimeerde decodeerbuffers in het geheugen.
Interessante technische weetjes
- De bestandshandtekening (magic bytes) van 8 bytes is specifiek ontworpen om beschadiging van regeleinden (CR/LF) door FTP-overdrachten te detecteren.
- Het onofficiële recursieve acroniem voor PNG was 'PNG's Not GIF'.
- Apple gebruikt een eigen CgBI-chunk in PNG-bestanden voor iOS-apps die RGBA omdraait naar BGRA voor directe GPU-rendering.
Veelgestelde technische vragen
Waarom neemt de bestandsgrootte van een PNG-bestand soms toe wanneer het wordt opgeslagen in bewerkingsprogramma's?
Verschillende softwarepakketten gebruiken uiteenlopende Deflate-compressieniveaus en heuristieken voor de voorspellende scanlinefilters. Programma's zoals Photoshop voegen vaak ongecomprimeerde kleurprofielen en XMP-metadatablokken toe en gebruiken niet-geoptimaliseerde IDAT-chunkgroottes. Gespecialiseerde tools zoals de File2File.app Compressor evalueren alle 5 scanlinefilters opnieuw om een zo klein mogelijk bestand te bereiken.
Wat is het verschil tussen PNG-8 en PNG-24?
PNG-8 gebruikt een geïndexeerd kleurenpalet van maximaal 256 kleuren (vergelijkbaar met GIF), wat erg kleine bestanden oplevert die geschikt zijn voor eenvoudige pictogrammen. PNG-24 ondersteunt 16,7 miljoen kleuren (Truecolor met 8 bits per kanaal), en PNG-32 voegt daar een alfatransparantiekanaal van 8 bits aan toe.
Waarom heeft PNG 5 voorspellende scanlinefilters?
Deflate comprimeert herhaalde bytepatronen. Omdat pixelwaarden in foto's en kleurverlopen geleidelijk veranderen, filtert PNG elke scanline (None, Sub, Up, Average, Paeth) door verschillen tussen aangrenzende pixels te berekenen. Zo worden verloopgegevens omgezet in reeksen bytes die dicht bij nul liggen en met Deflate veel beter comprimeren.
Ondersteunt PNG CMYK-kleurruimten voor commercieel drukwerk?
Nee. De officiële PNG-specificatie van het W3C beperkt de kleurtypen bewust tot grijstinten, geïndexeerd en RGB. Professionele drukwerkprocessen die CMYK vereisen, moeten TIFF- of PDF-containers gebruiken.
Gerelateerde conversieparen voor PNG
Het converteren van PNG-rasterafbeeldingen naar het JPEG-formaat verkleint de bestandsgrootte door compressie met verlies (lossy) toe te passen. Hierdoor laden afbeeldingen sneller op websites en gebruiken ze minder opslagruimte.
Het converteren van een JPEG-rasterafbeelding met verlies naar een verliesvrije PNG-rasterafbeelding voorkomt verder generatieverlies en voegt ondersteuning voor transparantie via een alfakanaal toe.
Het converteren van PNG-afbeeldingen naar WebP kan de bestandsgrootte verkleinen met behoud van transparantie; het resultaat hangt af van het gebruik van codering met verlies of verliesvrije codering en van de inhoud van de afbeelding.
Het converteren van WebP naar PNG levert een stilstaande afbeelding op voor software die PNG ondersteunt; WebP-animatie wordt niet behouden en details van bronbestanden met verlies kunnen niet worden hersteld.
Het converteren van HEIC naar PNG transformeert met verlies (lossy) gecomprimeerde HEVC-foto's in breed ondersteunde, verliesvrije grafische bestanden.
Het converteren van SVG-vectorbestanden naar PNG-rasterafbeeldingen transformeert schaalbare, op code gebaseerde graphics in rasters met vaste pixels voor brede toepassingscompatibiliteit.
Verpak PNG-rasterafbeeldingen in een SVG-vectorcontainer (XML) voor responsieve schaling op het web en eenvoudige integratie in vectorlay-outs.
Converteer Adobe Photoshop PSD-afbeeldingen naar verliesvrije PNG-afbeeldingen met volledige alfatransparantie, rechtstreeks in uw browser en zonder serveroverdracht.