Libpng
# Libpng

libpng (ehemals pnglib) ist eine weit verbreitete freie Programmbibliothek zur Verarbeitung des komprimierten Rastergrafik-Datenformates Portable Network Graphics (PNG).

Sie ist in der Programmiersprache C geschrieben und baut für die Deflate-Datenkompression auf den Funktionen der zlib-Bibliothek auf.

## Funktionalität

Die libpng ist plattformunabhängig und erweiterbar. Sie implementiert einen PNG-Codec (Kodierung und Dekodierung) mit Unterstützung für nahezu alle Merkmale des Formates. Neben den Pflicht-Blocktypen IHDR, IDAT, PLTE und IEND ist die Unterstützung der weiteren Standardblocktypen jeweils in speziellen Makros implementiert, die bei der Kompilierung ausgelassen werden können. Im Paket mit der eigentlichen Bibliothek werden auch die Hilfsprogramme libpng16-config, pngfix und png-fix-itxt geliefert.

## Bedeutung

libpng ist die offizielle Referenzimplementierung des verbreiteten PNG-Formates. Sie wurde als Ergänzung zur Spezifikation des PNG-Formates hergestellt, um den Einsatz des Formates zu erleichtern. Dazu wird sie als freie Software auch im Quelltext unter den Bedingungen einer freizügigen Open-Source-Lizenz, der zlib-/libpng-Lizenz, zur Verfügung gestellt. Die Bibliothek wurde in zahlreiche Anwendungen integriert, sowohl direkt als auch in Frameworks oder sogar als zentrale Standard-Komponente in einigen Betriebssystemen. Durch die freizügige Lizenz findet sich darunter auch proprietäre Software.

Durch die Verwendung als Komponente von teils auch Internet-exponierter Software wie Webbrowsern waren Fehler im Code von libpng schon mehrmals auch für bekanntere Sicherheitsprobleme verantwortlich.

## Geschichte

Ursprünglicher Entwickler der libpng war Guy Eric Schalnat (von Group 42, Inc.), welcher die ersten Versionen bis einschließlich 0.88 (1.0 beta 2) vom 26. Januar 1996 herausgab. Während 1996 und 1997 übernahm Andreas Dilger die Entwicklung und produzierte die Versionen bis 0.96 (1.0 beta 6) vom 28. Mai 1997. Seit Januar 1998 (Version 0.97) wird die Entwicklung von Glenn Randers-Pehrson koordiniert, der auch der PNG-Entwicklergruppe angehört. Viele weitere waren als beitragende Autoren an der Entwicklung beteiligt.

