Draagbare netwerkgrafieken

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken
Draagbare netwerkgrafieken
logo
Bestandsextensie : .png
MIME-type : afbeelding / png [1]
Magisch nummer : 8950.4e47.0d0a.1a0a hex
\ x89PNG \ r \ n \ x1a \ n [2]

(ASCII-C-notatie )

Ontwikkeld door: PNG Development Group (met dank aan W3C )
Type: Grafische bitmapindeling zonder verlies
Uitgebreid naar: APNG , JNG , MNG
Standaard(en) : ISO 15948 , IETF- RFC 2083
Website : libpng.org/pub/png

Portable Network Graphics ( PNG , Engels voor draagbare netwerkafbeeldingen , ook uitgesproken lettergreep als acroniem [ pɪŋ ]) is een rasterafbeeldingsindeling met verliesvrije gegevenscompressie . Het wordt erkend door het World Wide Web Consortium (W3C) en is het meest gebruikte verliesvrije grafische formaat op internet. [3]

PNG is ontworpen als een gratis vervanging voor het oudere Graphics Interchange Format (GIF), dat tot 2006 onderhevig was aan patentclaims , en is minder complex dan het Tagged Image File Format (TIFF). Naast verschillende kleurdieptes ondersteunt PNG ook transparantie via alfakanaal . PNG-foto's zijn doorgaans veel groter dan JPEG . Lange tijd kon het PNG-formaat niet gemakkelijk worden weergegeven in browsers, zodat het jaren duurde om zich naast JPEG en GIF te laten gelden. [4]

verhaal

De ontwikkeling van het PNG-formaat begon eind 1994, wat vrij laat is in vergelijking met andere grafische formaten zoals TIFF, GIF en JFIF (JPEG). De aanleiding waren licentieaanvragen van het softwarebedrijf Unisys voor het Lempel-Ziv-Welch-algoritme (LZW) dat door GIF wordt gebruikt.

Op 4 januari 1995 diende Thomas Boutell een vroege versie in (PBF Draft 1). De eerste correcte PNG-specificatie (versie 1.0) door Thomas Boutell en Tom Lane werd de officiële aanbeveling van het World Wide Web Consortium (W3C) op 1 oktober 1996. Op 14 oktober 1996 kreeg PNG het MIME-type image/png toegewezen door de Internet Assigned Numbers Authority (IANA). Op 15 januari 1997 werd PNG door de Internet Engineering Task Force (IETF) aangenomen als RFC 2083 . Op 31 december 1998 werd de PNG-specificatie versie 1.1, herzien door Adam Costello en Glenn Randers-Pehrson, gepubliceerd. Op 11 augustus 1999 publiceerde Glenn Randers-Pehrson eindelijk de laatste versie 1.2. Deze werd op 10 november 2003 verheven tot ISO- norm ISO/IEC 15948:2003 en werd tegelijkertijd de tweede editie van de W3C-aanbeveling.

Het PNG-formaat wordt nu veel gebruikt; Bovenal heeft het GIF vervangen in afbeeldingen die zeer comprimeerbaar zijn zonder verlies, zoals knoppen, pictogrammen en logo's. Het wordt meestal alleen gebruikt voor foto's als hun verliesvrije opslag voorrang heeft op een kleine gegevensgrootte, aangezien compressie met verlies (bijv. door JPEG) foto's i. A. kan nog meer comprimeren, zonder noemenswaardig kwaliteitsverlies voor het menselijk oog.

eigenschappen

Kleurmodi en precisie

Het PNG-formaat maakt grijswaarden , volledige kleuren en kleurenpaletmodi mogelijk , evenals een grijsschaal en een kleurmodus met alfakanaal (kleurtypes 0, 2, 3, 4 en 6).

Kleurdieptes

Voor grijswaardenafbeeldingen kan de resolutie 1, 2, 4, 8 of 16 bits per pixel zijn, voor kleurenafbeeldingen 8 ( RGB 8) of 16 bits (RGB16) per kleurkanaal . Als alternatief kunnen kleurenafbeeldingen worden opgeslagen met maximaal 256 geïndexeerde kleuren met behulp van de kleurenpaletmodus. De geïndexeerde kleuren kunnen vrij worden gekozen uit het volledige RGB8-spectrum.

transparantie

PNG-bestanden kunnen transparantie-informatie bevatten, hetzij in de vorm van een alfakanaal, als een enkele transparante kleur, of als een transparantiepalet dat een bestaand kleurenpalet aanvult dat een transparantiewaarde bevat voor elke paletkleur.

PNG ondersteunt alfakanalen met een diepte van 8 bit of 16 bit. Het is een kanaal met aanvullende informatie voor elke pixel. Dit geeft de dekking in verschillende niveaus aan van hoeveel van de achtergrond van een afbeelding moet doorschijnen. Als deze waarde 0 is, schijnt de achtergrond 100% volledig door. Als de maximale waarde van 255 is opgegeven voor een diepte van 8 bits (of 65535 voor 16 bits), komt dit overeen met volledige dekking. In dit geval is de achtergrond niet zichtbaar.

Met het PNG-formaat kunnen de randen van tekst en afbeeldingen worden afgevlakt, ongeacht de achtergrond. U kunt echte slagschaduwen gebruiken die zich op de achtergrond verbergen.

Metadata en datablokken

PNG-bestanden bestaan ​​uit verschillende datablokken ("chunks"), elk met verschillende functies, die worden geïdentificeerd door een reeks van vier letters (bijvoorbeeld tEXt voor tekstuele informatie). Naast de verplichte bloktypen IHDR, IDAT, PLTE en IEND, die elke implementatie moet ondersteunen, zijn andere optionele datablokken gestandaardiseerd. [5] Deze kunnen metadata bevatten over de beeldinhoud en andere aanvullende informatie, zoals kleurcorrectie . Deze kunnen bewerkt worden met programma's zoals TweakPNG [6] . Applicaties kunnen ook privégegevensblokken definiëren voor hun eigen doeleinden. Adobe Fireworks gebruikt PNG als toepassingsindeling en gebruikt privégegevensblokken om verschillende andere informatie erin op te slaan. Er is echter ook een risico op verwarring met de veel kleinere, normale PNG-bestanden.

Technische details

Bestandskop

Een PNG-bestand begint altijd met de volgende handtekening van acht bytes ( magisch getal ):

Byte(s) (hex) commentaar
89 Tabulator met bit 7 set
50 4E 47 ASCII-tekenreeks "PNG"; maakt eenvoudige identificatie van het bestandsformaat mogelijk wanneer u het in tekst of in een teksteditor bekijkt.
0D 0A CR en LF ( MS-DOS- typisch regeleinde)
1A Het teken van het einde van het bestand .
Deze byte zou de uitvoer afbreken als het bestand bijvoorbeeld werd uitgevoerd met het MS-DOS-commando TYPE .
0A Regelfeed

Compressie

Voorbeeldbestand met verschillende soorten inhoud
Weergave van de bitkosten per pixel van de bovenstaande PNG-afbeelding
(donker/blauw: lage bitkosten, groen: gemiddelde kosten, rood: hoge bitkosten)

De lossless datacompressie in PNG is gebaseerd op verschillende, soms optionele, verwerkingsstappen. Ten eerste kunnen de waarden van naburige pixels gedecorreleerd worden met een voorfilter om ze via een verschil met naburige waarden op een meer samendrukbare manier te kunnen beschrijven. Vervolgens kan met een substitutiecompressiemethode worden geprobeerd terugkerende beeldpatronen te herkennen en te vervangen door kortere terugverwijzingen naar een eerder voorval. Ten slotte wordt een entropiecodering gebruikt die de kansen van optreden van individuele waarden gebruikt door de op waarschijnlijkheid gesorteerde waarden te vervangen door codes van variabele lengte.

De hiernaast afgebeelde “bananenafbeelding” laat zien welke afbeeldingsgebieden gecomprimeerd kunnen worden en hoe efficiënt.

decorrelatie

Een PNG-afbeelding met 256 kleuren die dankzij het voorfilter slechts 251 bytes groot is. Dezelfde afbeelding als een GIF-bestand zou meer dan 13 keer zo groot zijn.

In de regel correleert de kleurwaarde van een beeldpunt met waarden van aangrenzende punten, dat wil zeggen dat er een afhankelijkheid of overeenkomst is. Om te profiteren van deze correlaties, ondersteunt PNG pre-filters, die eerst de uitvoergegevens decorreleren. Als resultaat worden beeldpunten beschreven met behulp van het verschil met aangrenzende punten ( deltacodering ). Voor elke beeldlijn kan een van de 5 filteropties worden gedefinieerd (zie hieronder). Om redenen van snelheid wordt de selectie vaak heuristisch gemaakt. Deze filters vervangen op omkeerbare wijze de kleurwaarden van de pixels door (evenveel, even grote) verschilwaarden. In de regel heeft dit verschilsignaal een aanzienlijk lagere dynamiek, d.w.z. waarden met gemiddeld kleinere hoeveelheden. Deze kunnen effectiever worden gecomprimeerd door de afsluitende entropiecodering. Hoe uniformer de beeldinhoud, hoe winstgevender dit mechanisme werkt. Tijdens het decoderen, nadat de gegevens zijn gedecomprimeerd, worden omgekeerde versies van de filters gebruikt om de werkelijke beeldgegevens te herstellen.

Deze mogelijkheid is een van de redenen waarom PNG-bestanden zo klein zijn.

In de huidige versie definieert PNG vijf verschillende filtertypes :

nummer Achternaam Beschrijving
0 Geen Geen voorfiltering. De originele pixelgegevens worden gebruikt.
1 Sub De verschillen met de pixel aan de linkerkant worden verwerkt.
2 Omhoog De verschillen met bovenstaande pixel worden verwerkt.
3 Gemiddeld Het verschil met de gemiddelde waarde wordt berekend op basis van de pixel erboven en de pixel aan de linkerkant.
4e Paeth Uit de pixel naast links, die erboven en die diagonaal linksboven wordt een zogenaamde Paeth-voorspellerwaarde berekend die de pixel voor de verschilvorming bepaalt.

Sommige programmeurs proberen meerdere filters om de compressie te verbeteren. Dit is een veelgebruikte techniek, vooral met de talrijke tools voor het optimaliseren van PNG-compressie.

In veel gevallen biedt de Paeth Predictor, genoemd naar zijn uitvinder, Alan W. Paeth , de beste resultaten. Hierbij wordt getracht automatisch de meest gelijkende beeldpunten uit de naburige beeldpunten links, boven en linksboven te gebruiken voor de verschilvorming. De functie selecteert de pixel die het dichtst bij links komt + boven − linksboven.

Substitutiecompressie en entropiecodering

worden uitgevoerd volgens de populaire deflate- methode, omdat deze vrij kan worden gebruikt zonder te worden belast met softwarepatenten . Het omvat substitutiecompressie volgens Storer, Szymanski, Lempel en Ziv ( LZSS-algoritme ) en entropiecodering volgens Huffman .

Veel programma's integreren de gratis deflate-bibliotheek zlib voor deflate-codering en -decodering ( codec ), die oorspronkelijk speciaal voor PNG is gemaakt. Deflate-compressie kan meestal (zoals in andere toepassingen - bijvoorbeeld met ZIP-compressie) in het uitvoerprogramma worden ingesteld in 10 niveaus van 0 (geen) tot 9 (best).

Tot nu toe is Deflate de enige ondersteunde methode. Er is echter bewust ruimte gelaten voor uitbreidingen om andere, efficiëntere of snellere algoritmen in toekomstige PNG-versies te ondersteunen. Om neerwaartse compatibiliteit met bestaande PNG-compatibele programma's te garanderen, zijn er momenteel geen plannen om andere methoden in de standaard op te nemen.

compatibiliteit

Kleurprofielen

Behalve Safari en Firefox (na activering), ondersteunt geen enkele browser embedded kleurprofielen (iCCP-blokken). Daarom bieden ze geen volledig kleurbeheer. Omdat Safari de enige browser is die volledige kleurprofielen weergeeft, is een uniforme en platformonafhankelijke weergave van afbeeldingen in PNG-formaat met een ingebed kleurprofiel momenteel niet mogelijk. Deze functie is gepland voor de toekomst, in ieder geval voor de Firefox-browser. Embedded gammacorrectiewaarden (gAMA-blokken) daarentegen worden door de meeste huidige browsers correct herkend en verwerkt.

transparantie

Microsoft Internet Explorer tot versie 6 had problemen met de weergave van transparante PNG-bestanden met een alfakanaal; PNG-bestanden met binaire ("ja / nee") transparantie werden echter zonder fouten weergegeven.

legaal

Het PNG-formaat is niet onderworpen aan enige patentbeperking . Elke softwarefabrikant kan daarom programma's publiceren die PNG kunnen lezen en schrijven zonder licentiekosten te betalen.

vergelijking

voordelen

  • De compressie is verliesvrij en meestal compacter dan vergelijkbare formaten. [7]
  • Ondersteuning van alfatransparantie (tot 16 bits, d.w.z. 65.536 niveaus; 8 bits zijn gebruikelijk).
  • Ondersteuning van kleur- en helderheidscorrectiemechanismen om ervoor te zorgen dat een afbeelding er op verschillende systemen ongeveer hetzelfde uitziet.
  • Het format kent een vaste norm en is uitbreidbaar, zodat in theorie iedere opleiding aan bepaalde minimumeisen moet voldoen. Bovendien is PNG zowel opwaarts als neerwaarts compatibel, wat incompatibiliteit tussen verschillende versies vermindert.
  • Geïntegreerde checksums maken het mogelijk fouten in het bestand in een vroeg stadium op te sporen.
  • PNG-bestanden zijn streamable , wat betekent dat de interpretatie van de bestandsinhoud geen willekeurige toegang vereist , zoals bij veel TIFF- bestanden het geval is.
  • Een optionele interliniëring met 7 runs volgens Adam M. Costello (" Adam7 ") is beschikbaar, dwz de geleidelijke beeldopbouw tijdens transmissie over langzame datalijnen. Zelfs met zeer weinig transmissie is een relatief bruikbare weergave mogelijk. [8e]
  • Ondersteuning door alle grafische webbrowsers is beschikbaar (in Internet Explorer wordt alpha-transparantie echter alleen ondersteund vanaf versie 7.0).

nadeel

  • De officiële manier om animaties weer te geven is het MNG- formaat, dat door geen enkele browser wordt ondersteund. In plaats daarvan heeft het APNG- formaat de overhand gekregen voor geanimeerde PNG. PNG's kunnen ook worden geanimeerd als spritesheets met behulp van verschillende webtechnologieën , zoals ondersteund door bijvoorbeeld Facebook , in tegenstelling tot geanimeerde GIF's.
  • PNG ondersteunt het CMYK-kleurmodel niet en is daarom niet geschikt als volledige TIFF- vervanging.
  • Embedded meta-informatie wordt ondersteund, maar voldoet niet aan de Exif- of de IPTC-standaard .
  • Met PNG kunnen delen van een afbeelding niet gemakkelijk worden geladen. Als u slechts een gedeelte van de afbeelding wilt laden, moet u eerst alle afbeeldingslijnen laden. In het geval van PNG-bestanden die interlaced zijn opgeslagen in plaats van sequentieel, moeten er zelfs meer worden geladen.
  • Bij bepaalde soorten afbeeldingen (bijv. foto's) haalt het formaat in principe niet de compressiesnelheden van lossy-algoritmen zoals JPEG . Algoritmen die gespecialiseerd zijn in bepaalde klassen van afbeeldingsgegevens, bijvoorbeeld voor gescande documenten ( bijv. JBIG2 ), comprimeren dergelijke inhoud ook sterker dan PNG.

Vergelijking met Graphics Interchange Format (GIF)

Bij gebrek aan animatie-opties is PNG een onvolledig alternatief voor het GIF- formaat.Animatie-opties worden uitbesteed naar een apart formaat met PNG. De twee formaten samen zouden GIF volledig moeten vervangen; dit is tot op de dag van vandaag niet gebeurd.

Naast de kleurenpaletmodus ondersteunt PNG ook afbeeldingen in kleur en grijswaarden met een precisie tot 16 bits per kleurkanaal. Met GIF is het alleen mogelijk om één van de palletinvoeren volledig transparant te verklaren.

De compressiesnelheid van PNG is meestal beter dan die van GIF. De voorfilters zijn de reden waarom PNG-bestanden meestal minder ruimte innemen. Aan de andere kant is de complexiteit van het formaat echter ook hoger.

Met de progressieve beeldstructuur van PNG met Adam7 interlacing treedt aanzienlijk minder beeldvervorming op dan bij GIF.

Tot 2004 werd het gebruik van de GIF beperkt door het gebruik van het gepatenteerde LZW- algoritme, waarvan PNG vanaf het begin vrij was. (GIF werd tot oktober 2006 nog beperkt door andere patenten.)

Verwante formaten

  • Animated Portable Network Graphics (APNG) ondersteunt animatie. Het is achterwaarts compatibel met PNG; pure PNG-decoders tonen alleen de eerste afbeelding van de animatie.
  • Multiple-Image Network Graphics (MNG) slaat animaties op.
  • JPEG Network Graphics (JNG), een subformaat van MNG, ondersteunt het verliesgevende deel van JPEG als compressiemethode.
  • PNG + (PNG plus) is een Microsoft in Picture It! Gebruikte bestandsindeling die ook lagen en lay-outs met meerdere pagina's kan opslaan. Het is incompatibel met PNG en wordt door bijna geen ander programma gebruikt dan Picture It! ondersteunt.

Noch MNG, JNG, noch APNG of PNG + zijn W3C-aanbevelingen.

software

De officiële referentie-implementatie voor het PNG-formaat is de libpng- programmabibliotheek . [9] Het is onderworpen aan een vrije softwarelicentie en wordt daarom meestal ook gevonden als een belangrijke systeembibliotheek in vrije besturingssystemen. PNGOUT en Zopfli PNG zijn bekende PNG-encoders die zijn geoptimaliseerd voor de meest compacte compressie. Er zijn een aantal hulpprogramma's voor het optimaliseren van de bestandsgrootte voor PNG-bestanden, die vooral bekend staan ​​om hun gebruik bij het optimaliseren van de laadtijden van websites en die vaak onder andere op deze twee speciale encoders zijn gebaseerd. Veel programma's slaan PNG-afbeeldingen niet optimaal op, wat leidt tot onnodig grote bestanden. Verschillende programma's zoals pngcrush , OptiPNG of andere [10] maken lossless recompressie en vaak veel kleinere bestanden mogelijk.

Alle moderne webbrowsers ondersteunen nu het formaat. Belangrijke beeldverwerkingsprogramma's ondersteunen het meestal bij zowel lezen als schrijven.

literatuur

  • Thomas W. Lipp: Grafische formaten. Microsoft Press, Unterschleißheim 1997, ISBN 3-86063-391-0
  • John Miano: bestandsindelingen voor gecomprimeerde afbeeldingen. Addison-Wesley, Reading 2000, ISBN 0-201-60443-4
  • Greg Roelofs: PNG: De definitieve gids. O'Reilly, Sebastopol 1999, ISBN 1-56592-542-4 ( libpng.org )
  • Jörg Stroisch, Thorsten Olscha: optimalisatie van webafbeeldingen . Markt + Technik, München 2003, ISBN 3-8272-6530-4

web links

Commons : Portable Network Graphics - verzameling van foto's, video's en audiobestanden

Individueel bewijs

  1. Beeldmediatypen. Internet Assigned Numbers Authority , 27 september 2009, geraadpleegd op 6 oktober 2010 .
  2. PNG-specificatie (Portable Network Graphics), versie 1.2. 12.12. PNG-bestand handtekening. 14 juli 1999, geraadpleegd op 6 oktober 2010 .
  3. Gebruik van afbeeldingsbestandsindelingen voor websites , Engels
  4. Sibylle Mühlke: Adobe Photoshop CC, 7e editie 2018, p 1051
  5. Linux Foundation Wiki: LibPng - Specificatieoverzicht ( Memento van het origineel van 5 september 2014 in het internetarchief ) Info: De archieflink is automatisch ingevoegd en is nog niet gecontroleerd. Controleer de originele en archieflink volgens de instructies en verwijder deze melding. @ 1 @ 2 Sjabloon: Webachiv / IABot / wiki.linuxfoundation.org
  6. Jason Summers: TweakPNG , Engels
  7. Vergelijking van de eigenschappen (inclusief compressie) van BMP, GIF, PNG, JPEG, TIFF, PCX en TGA , geraadpleegd op 10 oktober 2012
  8. Stephan T. Lavavej: Introduction to PNG. In: nuwen.net. Ontvangen 6 oktober 2010 .
  9. libpng. Ontvangen 13 juli 2013 .
  10. Cosmin Truţa: een gids voor PNG-optimalisatie . (met directory van programma's voor lossless recompressie, Engels)