GD Library
# GD Library

Die GD Library, kurz GD oder GDlib und GD2, ist eine von Thomas Boutell und anderen entwickelte Open-Source-Programmbibliothek zur dynamischen Erzeugung und Manipulation von Grafiken. Die GD Library ist in C geschrieben, es gibt jedoch Schnittstellen zu anderen Programmiersprachen wie Perl oder PHP.

## Entwicklung

Die Abkürzung GD stand zunächst für „gif draw“, dem ursprünglichen Ausgabeformat. Als Unisys für den beim Graphics Interchange Format (GIF) verwendeten LZW-Algorithmus ab 1999 auch für nicht-kommerzielle Softwareprojekte Lizenzgebühren verlangte (siehe GIF und die LZW-Patente), wurde die GIF-Ausgabe nicht mehr unterstützt und stattdessen das PNG-Format verwendet (das Lesen von GIF-Dateien war aber weiterhin möglich). Als das Patent im Jahre 2004 weltweit ablief, wurde mit Version 2.0.28 die volle GIF-Unterstützung wieder eingeführt.

## Funktionen

Neben GIF- und PNG- können auch JPG- und WBMP-Dateien geschrieben werden. Ab Version 2.0 können auch True-Color-Bilder erzeugt werden, vorher waren nur Bilder mit 256 Farben möglich.

Der Funktionsumfang umfasst das Zeichnen von Linien, Rechtecken, Polygonen, Kreisbögen und Ellipsen sowie die Textausgabe mit eingebauten, TrueType- oder Postscript-Fonts. Daneben können Bilder oder Ausschnitte von Bildern aus Dateien eingelesen und manipuliert werden. Alphakanäle mit 7 Bit werden unterstützt. Auch die Erzeugung animierter GIF-Dateien ist möglich.

Ein weitverbreitetes Einsatzgebiet ist die dynamische Erzeugung von Webgrafiken mit PHP, zum Beispiel für Diagramme, oder die Erzeugung von Vorschaubildern. Eine Reihe von Bibliotheken setzt auf GD auf und liefert erweiterte Funktionen etwa für Informationsgrafiken, so JpGraph.

## GD2

GD2 ist die verbesserte Version von GD und heute immer noch weitverbreiteter Standard; z. B. ist sie in PHP 5 eingebaut. Mit GD2 können eine Vielzahl von Aufgaben an gespeicherten .gif- oder .png-Bildern vorgenommen werden, z. B.:

* die Bildgröße verändern, Herstellung von „Briefmarken“ (thumbnails),
* Farben verändern (z. B. für Rahmengrafikelemente).

## Liste unterstützter Programmiersprachen

* C/C++
* PHP
* Perl
* Python
* Free Pascal
* Objective CAML
* REXX

## Ähnliche Softwarepakete

* ImageMagick
* Netpbm
