Grafik mit C/C++

OpenSource Pixel- und Objekt-Grafik

Auch mit der Programmiersprache C/C++ kann man PC-Grafik herstellen.
Objekt-Grafik ist aus einfachen geometrischen Formen zusammengesetzt. Diese Art von Grafik kann man mit Standard C/C++ herstellen.
Pixel-Grafik beschreibt ein Bild durch die Farben aller einzelnen Bildpunkte. Zur Programmierung braucht man eine Grafik-Bibliothek. Hier wird Installation und Anwendung der GD-Library gezeigt.
C/C++ Klassiker der modernen Programmiersprachen
Pixel und Objekt-Grafik Grafik aus Bildpunkten oder 'Anweisungen zum Malen'
Vorausetzungen Compiler, Pfade, Schreib-Rechte
Objekt-Grafik mit C/C++ Bilder aus geometrischen Objekten, SVG
Programmierung von SVG
Pixelgrafik mit C/C++ Bilder aus einzelnen Bildpunkten
Grafik-Bibliothek GD-Library auf Linux
Grafik-Bibliothek GD-Library auf Linux
Erzeugung einer Grafik-Datei, CGI-Programm
Verwandte Themen GD-Library mit PHP, SVG Objekt-Grafik, ANSI-Escape-Sequenzen

Pixel- und Objekt-Grafik

Pixel-Grafik (Raster-Grafik)

Ein Bild wird durch zahlreiche einzelne Farb-Punkte (Pixel) dargestellt. Jeder Punkt ist durch Position und Farbe bestimmt.
Es gibt mehrere Bibliotheken von Programmen zur Herstellung und Bearbeitung von Pixel-Grafik.
Die XY-Koordinaten zur Angabe der Position werden von links oben gemessen.
Die Farbe wird entweder im → RGB-System angegeben (3 Zahlen 0...255 für Rot, Grün, Blau) oder im → FarbIndex-System (1 Zahl 0..255 pro Pixel).
Typische Pixel-Grafik: Menschen, Tiere, Blumen, Landschaft - z.B. mit Digital-Camera oder Scanner hergestellt.
Solche Bilder kann man mit (C/C++)-Programmen bearbeiten, z.B.:
Verkleinern (Thumbnails), Filter anwenden (Helligkeit, Konstrast, Schärfe), Wasserzeichen oder Text eintragen, ...
Diese beiden Beispiele wurden zwar mit → PHP-Programmen erzeugt., man könnte sie jedoch alternativ auch mit C/C++ oder → Perl herstellen.
Die programmierte Herstellung ist dann sinnvoll, wenn man Regeln oder Formeln zur Farbe der Pixel angeben kann, und wenn dabei komplizierte Formen oder Farb-Mischungen auftreten. Für einfache Formen verwendet man besser ↓ Objekt-Grafik.
Quelle: Boutell.com (modif)

GD-Library

Die GD-Library von Thomas Boutell (rechts) ist die am weitesten verbreitete Bibliothek von Programmen für Pixel-Grafik. Die GD-Library gibt es in zahlreichen kostenfreien Versionen für alle gängigen Betriebssysteme und Programmiersprachen, darunter auch C++, Perl, PHP, ...
Für dieses Web wird fast ausnahmslos die GD-Library verwendet, und zwar sowohl zur einmaligen Herstellung von 'berechneter' Pixel-Grafik (z.B. der oben gezeigten Farb-Balken und -Scheiben) als auch zur Live-Herstellung von dynamischer Pixel-Grafik.

ImageMagick

ist eine Bibliothek von Pixel-Grafik Programmen. ImageMagick gibt es nicht nur als Bibliothek für alle modernen Programmiersprachen, sondern auch als alleinstehendes (Konsolen)-Programm zur Manipulation von Grafik-Dateien.
Spezialität: ImageMagick kann mehr als 100 verschiedene Grafik-Formate umwandeln und bearbeiten, bietet jedoch auch Funktionen zur Bearbeitung (Filter, ...).

OpenCV

Open Source Computer Vision ist eine weitere offene Grafik-Bibliothek für alle gängigen Betriebssysteme und die Programmiersprachen C/C++ und Python. Weitere Programmiersprachen (Java) sind in Arbeit.
Home: OpenCV

Objekt-Grafik

Ein Bild besteht aus Grafik-Objekten, die durch Anweisungen beschrieben werden.
Beispiele für Grafik-Objekte: Linien, Kreise, Rechtecke, Text, PixelGrafik-Schnipsel (Snippets).
Einfache Objekte kann man zu beliebig komplexen Objekten zusammensetzen (z.B. zu einer Schraube, Motor, Auto, Flugzeug...)
Es gibt mehrere Methoden, um ObjektGrafik-Anweisungen zu formulieren. Der wichtigste Standard → SVG (Scalable Vector Graphics) wird u.a. von allen modernen Browsern unterstützt.
Objekt-Grafik (Vector-Grafik) kann man verlustfrei (!) transformieren, z.B. skalieren (vergrößern), drehen, ...
Die Objekte lassen sich beliebig anordnen, gruppieren, ausrichten oder in Schichten übereinander legen.
Mit der Programmiersprache Javascript kann man SVG Live manipulieren, z.B. Objekte erzeugen, ihre Eigenschaften ändern, Animationen durchführen usw.
Dieses Beispiel zeigt eine einfache SVG-Grafik aus 4 Objekten (Kreis, Rechteck, Dreieck, Text).
Rechts der SVG Quelltext dieser Grafik.
Mit C/C++ oder jeder anderen modernen Programmiersprache kann man SVG-Text genauso einfach erzeugen wie HTML-Text.
SVG-Grafik kann man in jede moderne → XHTML-Webseite direkt (inline) einbetten. Der Browser (an ihrem Client-PC) erzeugt aus den Anweisungen das sichtbare Bild (= die Bildpunkte am Monitor).

Details zu SVG Objekt-Grafik, Herstellung von Objekt-Grafik mit C/C++
SVG-Quelltext der links gezeigten Objekt-Grafik
<circle cx="50" cy="50" r="20" fill="red"/>
<rect x="15" y="15" width="30" height="30" fill="blue"/>
<g transform="translate(60,30)">
<polygon id="dreieck" points="-20,11 20,11 0,-23" fill="#0F0" />
</g>
<g font-family="Verdana, sans-serif">
<text font-size="18" x="60" y="30" stroke="#000">SVG</text>
</g>
→ SVG wird von allen modernen Browsern unterstützt. Lediglich die veralteten Versionen des MSIE-Browsers können kein SVG anzeigen.

ANSI Escape-Sequenzen

Dieses Thema wird lediglich als Ergänzung erwähnt.
Mit speziellen Steuerzeichen ist es möglich, auch einfache Konsolen-Programme mit einigen grafischen Attributen auszustatten.

Durch die klug überlegte Ausgabe von Text in verschiedenen Farben kann man zur besseren Übersicht der ansonsten eher langweiligen Konsolen-Programme beitragen.
Details zu den ANSI Escape-Sequenzen

Voraussetzungen zur Erzeugung von Grafik mit C/C++

Die Erfahrung zeigt, dass Probleme bei der Herstellung von Grafik mit C/C++ meist durch eine unsaubere Installation des Compilers verursacht sind.

In diesem Kapitel werden 3 Tests beschrieben, mit denen alle Vor-Bedingungen kontrolliert werden. Führen sie die Tests in der angegebenen Reihenfolge aus, wenn sie mit C/C++ noch wenig Erfahrung haben.

Überspringen sie dieses Kapitel, wenn ihre C/C++ Entwicklungs-Umgebung bereits professionell eingerichtet ist.

Kehren sie hierher zurück, wenn mit dem GD-Testprogramm (nicht erklärbare) Fehler auftreten.
Auch wenig geübte EntwicklerInnen können mit der GD-Library arbeiten und haben damit ganz andere Erfolgs-Erlebnisse als mit den langweiligen Konsolen-Programmen.

Die einmalige Installation und saubere Konfiguration ist der schwierigste Teil der Arbeit.

Dieses Problem kann man mit einem → virtuellen PC abfangen, den man fertig konfiguriert verteilen kann, soferne man keine Lizenz-Rechte verletzt.

GNU GCC Compiler

Die Beispiele dieser Seite (und dieses Webs) gehen davon aus, dass der meist-verwendete offene → GNU GCC Compiler installiert wurde, auf Windows in der Version als → MinGW-Compiler.
Der GNU GCC Compiler funktioniert auf allen gängigen Betriebssystemen gleich, man kann daher sowohl den C/C++ Quelltext als auch die Entwicklungs-Erfahrungen portieren.

Auf Windows werden gelegentlich andere Compiler verwendet, die zwar ebenfalls sauber arbeiten, jedoch teilweise anders zu konfigurieren und zu verwenden sind.
In diesem Fall müssen sie die Angaben dieser Seite auf ihren Compiler adaptieren.
Tipp: Man kann den GNU GCC Compiler problemlos zusätzlich zu anderen Compilern installieren und alternativ verwenden.

Pfad

Die Umgebungs-Variable PATH (oder path) ihres Betriebssystems muss den Pfad zu den C/C++ Compiler-Programmen enthalten. Starten sie eine Konsole und lassen den Wert der Variablen anzeigen:

Linux:
Die Compiler gcc und g++ befinden sich meist hier:
/usr/bin/gcc
/usr/bin/g++
Linux Shell-Konsole (Terminal):
# export | grep " PATH"
# declare -x | grep " PATH"
Typische Ausgabe:
PATH="/sbin: ... :/usr/bin: ..."
Wenn die Compiler-Pakete gcc und make auf Linux installiert wurden, dann sind sie normalerweise auch fertig konfiguriert.

Windows
Die Compiler-Programme sollten sich hier befinden:
C:\Programme\MinGW\bin\gcc.exe
C:\Programme\MinGW\bin\g++.exe
Windows-Konsole (Eingabeaufforderung cmd.exe):
C:\> path
Typische Ausgabe:
PATH=C:\Windows\system32; ... ;C:\Programme\MinGW\bin; ...
Im Ausgabe-Text muss der Pfad zum Compiler eingetragen sein.
Auf Windows muss man selbst installieren und konfigurieren. Wenn dabei die Einstellung der Umgebungs-Variablen PATH vergessen wurde, dann holen sie das vor jeder weiteren Arbeit mit C/C++ oder der GD-Library nach.
Details zum MinGW-Compiler und zu Umgebungs-Variablen auf Windows

Version

Wenn die Umgebungs-Variable PATH richtig konfiguriert wurde, dann muss man die Compiler-Programme immer erreichen, unabhängig vom momentanen Arbeits-Verzeichnis (Current working directory CWD).

Linux Shell-Konsole
# gcc -v
# g++ -v
# make -v
Das Compiler-Programm zeigt seine Version und einige weitere Daten an. Hier darf keine Fehler-Meldung auftreten.

Windows Konsole
C:\> gcc -v
C:\> g++ -v
Der Versions-Text wird angezeigt. Wenn eine Fehlermeldung angezeigt wird, dann ist die Umgebungs-Variable PATH nicht so konfiguriert wie erforderlich.

Programm  make
Dieses Compiler Hilfs-Programm wird hier zwar nicht benötigt, jedoch von allen größeren C/C++ Projekten. Installieren sie auf Linux das Paket make, auf Windows das → MinGW Compiler-Werkzeug MSYS.
Der Pfad zum Programm make (make.exe) wird genauso konfiguriert und getestet wie jener zum Compiler-Programm gcc (gcc.exe), z.B. auf Linux oder Windows:
# make -v
C:\> make -v

Test-Projekt

Erstellen sie im Verzeichnis ihrer C/C++ Projekte eine Text-Datei, z.B. auf Linux
/home/<user>/Dokumente/test.c
(Ersetzen sie <user> durch ihren Linux User-Namen)
oder auf Windows
C:\CPP\Test\test.c
Tragen sie den rechts vorgestellten C/C++ Quelltext ein.
Öffnen sie eine Shell-Konsole und navigieren sie in jenes Verzeichnis, in welchem sich der C/C++ Quelltext befindet, z.B. (Linux, Windows)
# cd /home/<user>/Dokumente/Test
C:\> cd C:\CPP\Test
Starten sie den GCC Compiler (Linux, Windows)
# gcc -o test.bin test.c
C:\> gcc -o test.exe test.c
Dabei sollte keine Fehler-Meldung angezeigt werden.
Führen sie das erzeugte Programm aus (Linux, Windows). Verwenden sie absolute Pfade (2.Zeile), wenn relative Pfade nicht erlaubt sind.
# test.bin
# /home/<user>/Dokumente/test.bin
C:\> test
C:\> C:\CPP\Test\test.exe
Bei Ausführung sollten sie 3 Zeilen Text ohne Fehlermeldung erhalten.
Vom Programm wird eine Text-Datei test.txt erzeugt. Öffnen sie diese Datei und kontrollieren sie den Text.

Quelltext eines C/C++ Test-Programms zur Ausgabe einer (Text)-Datei:
#include <stdio.h>
int main() {
char path[]="test.txt";
FILE *fp;
printf("Programm test\n");
printf("Pfad = %s\n",path);
fp = fopen(path,"w");
fprintf(fp,"Das ist ein Test\n");
fclose(fp);
printf("Ende des Programms\n");
return 0;
}

Dieses kleine Test-Programm prüft, ob ihr C/C++ Compiler korrekt funktioniert und ob sie im verwendeten Projekt-Verzeichnis (Ordner) das Recht haben, Dateien zu erzeugen.
Verwenden sie für diesen Test keine Entwicklungs-Umgebung (z.B. → Code::Blocks, → Eclipse, ...).

Wenn der Test problemlos funktioniert, dann sind alle allgemeinen Voraussetzungen erfüllt. Wenn später (mit den Grafik Demo-Programmen) Fehler auftreten, dann haben diese nichts mit der Installation oder -Funktion ihres GCC Compilers zu tun.
Die weitere Vorgangsweise richtet sich danach, ob die Pixel- oder Objekt-Grafik herstellen wollen:

Objekt-Grafik lässt sich ohne weitere Vorbereitung rasch und einfach ausprobieren:
↓ Übersicht im nächsten Kapitel, → Demo-Beispiel auf einer eigenen Seite.
Pixel-Grafik erfordert die Installation einer Grafik-Bibliothek (GD-Library) und damit einigen zusätzlichen aufwand vor Beginn der Programmierung:
↓ Übersicht, Installation auf ↓ Linux, auf ↓ Windows auf dieser Seite, → Demo-Beispiel auf einer eigenen Seite.

Objekt-Grafik mit C/C++

Die Standard-Methode zur Programmierung und Erzeugung von Objekt-Grafik ist → SVG (Scalable Vector Graphics).
SVG ist Mitglied der → XML-Familie und mit allen anderen XML-Technologien kompatibel.
Diese einfache Objekt-Grafik dient als Modell. Das Bild sieht gleich aus wie eine ↓ Pixel-Grafik, wurde jedoch erst von ihrem Browser nach SVG-Anweisungen hergestellt. Mit Rechsklick in die Grafik können sie den Quelltext ansehen.
So wie alle anderen XML-Dateien enthält eine SVG-Datei nur einfachen Text.
Daher ist es es mit jeder Programmiersprache besonders einfach, SVG Objekt-Grafik zu erzeugen: Man braucht dazu keine besonderen Funktionen oder Bibliotheken.

SVG enthält lediglich Anweisungen zur Erzeugung der Grafik und enthält selbst kein 'Bild': Das wird vom ausführenden Programm übernommen, z.B. von jedem modernen Browser.
Damit erreicht man u.a. diese Vorteile:
Die Rechenleistung wird von (einem einzigen) Server auf (viele) Client-PC verlagert. Das steigert die Effizienz erheblich.
Die fertige Grafik ist programmierbar: Man kann am Arbeits-PC alle denkbaren Änderungen und Animationen der Grafik ausführen, ohne die Datei erneut zu laden.

Objektgrafik-Datei

Zur Herstellung einer → SVG Objektgrafik-Datei mit C/C++ braucht man lediglich die Standard-Library <stdio.h>

Diese Aufgabe ist ebenso einfach wie die Herstellung irgendeiner anderen Text-Datei. Sie ist meist in wesentlich kürzerer Zeit lösbar als für Pixel-Grafik erforderlich.

Die erzeugten Objektgrafik-Dateien kann man mit jedem modernen Browser ansehen, ebenso mit den meisten Grafik-Viewer Programmen. Wichtiger ist jedoch die Anwendung im Intranet oder Internet: Die Dateien lassen sich in jede Webseite einbetten.

Objektgrafik-Datenstrom

Ebenso wie Pixel-Grafik kann man auch Objekt-Grafik Live herstellen und sofort an den Client (Browser) senden.
Dazu ist C/C++ optimal geeignet, weil die Programme mit am Server-PC mit maximaler Geschwindigkeit laufen.
Ein typisches Beispiel ist die Live-Herstellung von Büro-(Office)-Grafik aus den angeforderten Daten einer Datenbank.

Die → Ajax-Technologie geht noch einen Schritt weiter: Kleine Javascript-Programme können für eine bereits geladene Webseite nach Bedarf weitere Objekte (z.B. eine Grafik) Live anfordern und anzeigen.
Details zur Programmierung eines Beispiels: C/C++ Demo-Programm zur Herstellung einer SVG Grafik.

Pixel-Grafik mit C/C++

In diesem Web werden 2 unterschiedliche Methoden zur Erzeugung und Anwendung von C/C++ Grafik Programmen vorgestellt:

Das C/C++ Demo-Programm erzeugt eine Grafik-Datei, z.B. das einfache Muster rechts als Datei gdtest.png

Das C/C++ Programm erzeugt Live einen 'Datenstrom' (String) der Grafik-Daten.
Diese einfache Pixel-Grafik dient als Modell für alle weiteren Grafik-Produkte mit beliebiger Komplexität.

Die erste Grafik macht viel Mühe und kostet eine Menge Zeit. Beginnen sie unbedingt mit der einfacheren → Herstellung von Grafik-Dateien.

Wenn das erste Beispiel funktioniert, dann gelingt die Herstellung weiterer Bilder rasch und einfach: Das → Projekt Sinus zeigt eine Grafik, bei der jedes einzelne Pixel nach Algorithmen berechnet wird.

Text-Daten und Binär-Daten

Einfache Konsolen-Programme ('Hallo Welt') erzeugen nur lesbaren Text. Das verstellt manchmal den Blick dafür, dass ein Programm natürlich beliebige Ausgabe-Daten erzeugen kann, was dann als Ausgabe von 'Binären Daten' bezeichnet wird: Gemeint ist damit die Ausgabe aller möglichen Bytes 0..255 (Hexadezimal 0x00..0xFF).

Binäre Grafik -Daten

Die Daten einer Pixel-Grafik werden in jedem Fall 'Binär' codiert, d.h. unter Verwendung aller Bytes 0..255
Die einzelnen Grafik-Formate unterscheiden sich darin, welche Regeln man zur Codierung der Pixel-Farben verwendet. Diese Regeln braucht man nicht selbt zu kennen oder zu programmieren: Die Grafik-Bibliothek bietet dazu alle Möglichkeiten.
Derzeit sind die wichtigsten Grafik-Formate PNG, JPEG und GIF.
Details zu Farben in der Informatik

Pixel-Grafik Dateien

Die Programmierung eines C/C++ Programms zur → Erzeugung einer einfachen Grafik-Datei wird detailliert vorgestellt.
Für höhere Ansprüche zeigt das → Projekt Sinus eine Grafik, in der jedes Pixel nach Algorithmen berechnet wird.

Sie können auf den Erfahrungen aufbauen und danach fast beliebig große und komplexe Grafik-Dateien nach eigenen Vorgaben herstellen.
Trainieren sie mit solchen einfachen Beispielen, bevor sie die Herstellung von Hochleistungs-(CGI)-Programmen in Angriff nehmen.

Diese Methode bietet den einfachsten Zugang zur Arbeits-Technik. Für C/C++ StudentInnen bietet sich die Möglichkeit, in die langweiligen Konsolen-Programme etwas Farbe zu bringen.

In der Praxis werden solche Programme allerdings kaum verwendet: Man erzielt das gleiche Ergebnis mit anderen Programmiersprachen (Java, → Perl, → PHP, ...) wesentlich rascher und einfacher.

Live Pixel-Grafik

Die C/C++ Programmierung unterscheidet sich kaum von jener zur Herstellung einer (statischen) Grafik-Datei.

Die Schwierigkeiten liegen meist bei der Einrichtung des für diese Methode benötigten (→ LAMP) Standard-Servers. Das mit C/C++ hergestellte Programm arbeitet in diesem Fall als Webserver-(CGI)-Hilfsprogramm.

Diese Methode setzt sowohl C/C++ Kenntnisse als auch eine funktionierende Server- und Netzwerk-Technik voraus. Letztere kann man allerdings mit einem → virtuellen Server-PC einfach und kostenfrei bereitstellen.

Diese Art der Anwendung verlangt maximale Geschwindigkeit, daher ist C/C++ zur Programmierung am besten geeignet.

Grenzen

Wenn zur Herstellung der Grafik einfache geometrische Objekte verwendet werden, dann ist Pixel-Grafik dafür zu langsam und zu aufwändig.

↑ Objekt-Grafik ist für solche Bilder optimal geeignet. Selbstverständlich kann man auch Objekt-Grafik (als Datei oder Live-Datenstrom) mit C/C++ erzeugen.

Grafik-Bibliothek

Zur Programmierung von Pixel-Grafik braucht man eine Grafik-Bibliothek. In disem Web wird fast ausschließlich die GD-Library verwendet.
Nach Installation und Konfiguration können sie mit der → Programmierung eines Demo-Beispiels beginnen.
Die weiteren Kapitel dieser Seite sollen bei der Installation und Konfiguration helfen:
GD-Library auf Linux
GD-Library auf Windows

Details zu Grafik-Dateien, Grafik-Datenstrom (String)

GD-Library auf Linux

Installation

Laden sie Software auf Linux nach Möglichkeit immer mit der Software-Verwaltung ihrer Distribution, z.B. mit Ubuntu Software Center, Synaptic, apt, aptitude, (Debian Ubuntu), YAST (OpenSuSE), up2date (RedHat, CentOS, yum (Fedora), ...
Debian (Ubuntu): Suchen sie nach Paketen libgd2*. . Installieren sie die 'GD Grafik-Bibliothek' in der Entwicklungs-Version (Laufzeit-Paket genügt nicht). Wenn Varianten angeboten werden, dann installieren sie bevorzugt libgd2-xpm-dev, nur notfalls libgd2-noxmp-dev)
Auf OpenSuSE suchen sie nach diesen 2 Paketen:
gd, gd-devel
(oder ähnlich, z.B. gd2...).

Die GD-Library ist so wichtig und weit verbreitet, dass man sie mit jedem Linux-System laden kann. Je nach Distribution kann es jedoch mühsam sein, den Namen des Software-Pakets zu finden.
Im Internet finden sie Hinweise auf den zu ihrem System passenden Paket-Namen.

Alternativ können sie die GD-Library aus dem Quelltext (Source) compilieren. Das erfordert fortgeschrittene Kenntnisse und die vorherige Installation einiger anderer Bibliotheken, z.B. libpng, zlib, jpeg-* und der FreeType Library (je nach den gewünschten Fähigkeiten).

Pfade

Es ist wichtig, den Pfad zu diesen beiden Dateien genau zu kennen:
gd.h
(wird für den C/C++ Quelltext gebraucht) und
libgd.so
(wird für den Compiler gebraucht).
Suchen sie nach diesen Dateien. Manche Verwaltungs-Programme (z.B. YAST) zeigen die Pfade zu allen Dateien der geladenen Pakete auf Wunsch an.
Häufig verwendete Pfade sind z.B.
/usr/include
/usr/lib
/usr/lib64
/usr/local/include
/usr/local/lib
Die Dokumentation wird meist an diesem Pfad installiert:
/usr/share/doc/packages/gd
Wenn sie weitere GD-Pakete installieren, dann finden sie diese in den gleichen Pfaden.
Konfiguration
Je nach Linux-Distribution ist das Shell Script-Programm gdlib-config installiert. Dieses Konsolen-Priogramm zeigt alle wichtigen Daten der installierten GD-Version an.

Anwendung:
# gdlib-config --all
Nach Installation und Konfiguration können sie mit der Programmierung beginnen:
C/C++ Demo-Programm zur Herstellung einer Pixel-Grafik

GD-Library auf Windows

Anwendungs-Version

Nur für Windows gibt es eine besondere Variante der GD-Library:
Die Datei bgd.dll ist für die Anwendung von Windows-Programmen optimiert, mit denen Grafik erzeugt wird. Wenn sie mit C/C++ und der GD-Library eigene Programme herstellen wollen, dann überspringen sie diesen Absatz: Weiter mit ↓ Voraussetzungen

Die Spar-Variante enthält in einer einzigen Datei die GD-Library und alle anderen meistens gemeinsam verwendeten Bibliotheken, wie z.B. freetype*.dll, jpeg*.dll, libpng*.dll, libiconv.dll, zlib*.dll
Sie können diese Anwendungs-Version kostenfrei vom GD-Web oder von einigen anderen Webs laden.

Diese Version ist nicht zur Entwicklung sondern nur zur Anwendung der fertigen Programme *.exe vorgesehen.

Damit diese Bibliothek von einem Windows-Programm *.exe gefunden wird, muss sie sich entweder im gleichen Verzeichnis wie das Programm befinden, oder (besser) in einem der durch die Umgebungs-Variable PATH angegebenen Pfade, z.B. hier (empfehlenswert):
C:\Windows\system32\bgd.dll

Voraussetzungen

Die Programm-Bibliothek msvcrt.dll muss installiert sein. Wenn sie fehlt, ladet man sie von Microsoft oder einer anderen Quelle im Internet.
Zur Entwicklung von C/C++ Programmen muss ein Compiler installiert sein und problemlos funktionieren. Alle weiteren Angaben dieser Seite setzen voraus, dass der → GNU C-Compiler (auf Windows als MinGW) installiert ist.
Details zur Installation und Konfiguration von MinGW

Download

Die Original Download-Seite http://www.libgd.org ist leider schon längere Zeit nicht erreichbar. Die beste Quelle ist derzeit das Projekt GD for Windows bei SourceForge.

Laden sie das komplette Setup-Programm gd-*.exe (ca. 1.3 MiB - Der * Stern steht für die jeweilige Version).

Installation

Stellen sie vor der Installation sicher, dass eine Verbindung zum Internet besteht: Der Installer ladet die benötigten Dateien.
Starten sie das Setup-Programm gd-*.exe an ihrem Windows Entwicklungs-PC. Das Programm führt durch die Installation. Akzeptieren sie im Zweifel die Vorschläge.
Die Dateien werden ohne weitere Maßnahmen in diesem Verzeichnis installiert:
C:\Programme\GnuWin32
Kontrollieren sie nach der Installation, in welchem Verzeichnis (Ordner) die Dateien wirklich installiert wurden:
Zur C/C++ Entwicklung braucht man die Header-Dateien, z.B.
C:\Programme\GnuWin32\include\gd.h

Zum Compilieren und zur Ausführung braucht man die Bibliotheken, z.B.
C:\Programme\GnuWin32\bin\libgd2.dll
C:\Programme\GnuWin32\lib\libgd.lib

Konfiguration

Windows-Programme müssen den Pfad zu den installierten Programm-Bibliotheken *.dll automatisch finden. Dazu muss man die → Umgebungs-Variable PATH ergänzen.

Öffnen sie Systemsteuerung | System | Erweitert | Umgebungsvariablen | Systemvariablen. Markieren sie die Variable PATH und klicken sie Bearbeiten.
Ein winziges Bearbeitungs-Fenster wird geöffnet.
Der Wert enthält eine Liste von Pfad-Angaben, deren Elemente durch ; Strichpunkt getrennt sind.

Fügen sie am Ende einen ; Strichpunkt und danach den Pfad zu den installierten Bibliotheks-Dateien an, z.B.
%SystemRoot%\System32;...;C:\Programme\GnuWin32\bin
Achtung: Zwischen den einzelnen Pfaden darf kein Leerzeichen enthalten sein.
Bestätigen sie mit OK, danach wird das Fenster geschlossen.

Test: Starten sie eine → Konsole (Eingabeaufforderung cmd.exe) und lassen sie den aktuellen Wert der Umgebungs-Variablen PATH anzeigen:
C.\> path
Der Ausgabe-Text sollte den zuletzt eingetragenen Pfad zu den GD-Bibliotheken enthalten. Falls nicht: Führen sie einen Neustart des Betriebssystems aus und wiederholen sie den Test.

Entwicklungs-Umgebung

Wenn sie eine komfortable Entwicklungs-Umgebung verwenden (z.B. → Code::Blocks, → Eclipse, ...), dann muss diese über die GD-Library informiert werden. Ansonsten können sie eigene Grafik-Programme zwar manuell (mit dem Konsolen-Programm gcc) compilieren, nicht jedoch mit der Entwicklungs-Umgebung.

Code::Blocks: Menü Settings | Compiler and Debugger | Linker Settings | Add
Geben sie den Pfad zur Linker-Bibliothek ein, z.B.
C:\Programme\GnuWin32\lib\libgd.lib

Dokumentation

Doku-Seite bei SourceForge: GnuWin - Installation and Useage

In der Installation ist normalerweise eine recht umfangreiche Dokumentation enthalten, z.B.
C:\Programme\GnuWin32\doc\...\index.html
Tipp: Kopieren sie die Doku-Datei mit einem sprechenden Namen an einen Pfad, wo sie zur Entwicklung rasch verfügbar ist, z.B.
C:\...\gd_doku.html

Tipp: Nach erfolgreicher Installation ist der erste Teil der Doku überflüssig. Man kann ihn bis zur Inhalts-Angabe 'Function and type reference' löschen. Die Doku ist dann wesentlich übersichtlicher.
Nach Installation und Konfiguration können sie mit der Programmierung beginnen:
C/C++ Demo-Programm zur Herstellung einer Pixel-Grafik