ein Kapitel zurück                                           ein Kapitel weiter

Der übliche Vorgang wie sie mit dem GD-Modul ein Grafik erstellen ist.....

  • 1.Neues Image erstellen oder laden.
  • 2.Farben definieren.
  • 3.Zeichnen
  • 4.Bild in ein bestimmtes Format festlegen
  • 5.Fertig

Wenn es so simpel ist wie eben beschrieben wollen wir uns ein Beispiel dazu ansehen. Die Massangaben sind übrigens in Pixel festgelegt. Hier Beispiel Nummer eins........

/*Download:gd1.c*/
#include <stdio.h> #include <gd.h> int main() { /*image initialisieren*/ gdImagePtr image; FILE *png; int black, white, red, blue, yelow; /*Wir erzeugen ein Image mit 100x100 Pixel*/ image=gdImageCreate(100,100); /*Speicher für die Farben allozieren*/ white=gdImageColorAllocate(image,0,0,0); /*Weiss*/ black=gdImageColorAllocate(image,255,255,255); /*Schwarz*/ red =gdImageColorAllocate(image,255,0,0); /*rot*/ blue =gdImageColorAllocate(image,0,0,255); /*blau*/ yelow=gdImageColorAllocate(image,255,255,0); /*gelb*/ gdImageRectangle(image,0,0,99,99,black); gdImageRectangle(image,1,1,49,49,yelow); gdImageFill(image,25,25,red); gdImageRectangle(image,50,1,98,49,yelow); gdImageFill(image,75,25, blue); gdImageRectangle(image,1,50,49,98,yelow); gdImageFill(image, 25,75,blue); gdImageRectangle(image,50,50,98,98,yelow); gdImageFill(image, 75,75,red); png = fopen("bild1.png","wb"); gdImagePng(image,png); fclose(png); gdImageDestroy(image); return 0; }

Und so siehts aus :



Übersetzen sie das Programm bitte mittels......

gcc -o image image.c -lgd

...dann sollte sich in Ihrem Verzeichnis ein Bildchen wie oben befinden. Das Übersetzen des Programms kann auf jedem System ein bißchen anders aussehen. Wir linken hier mit -lgd die GD-Library dazu. Da ich diese Beispiele auf einem Unix-System getestet haben, kann ich nicht sagen wie sie Ihr Beispiel auf anderen Systemen zur Ausführung bringen. Lesen sie dazu bitte die GD-Dokumentation, die sie mit der Library heruntergeladen haben.

So nun zu den einzelnen Schritten....

1.Neues Image erstellen oder laden

 /*image initialisieren*/
 gdImagePtr image;
 /*Wir erzeugen ein Image mit 100x100 Pixel*/
 image=gdImageCreate(100,100);

Hier mit erzeugen wir ein neues leeres Image mit der Grösse von 100X100 Pixeln. Wenn sie keinen Wert in den Klammern angeben, wird Standardmäßig ein 64x64 grosses Image erstellt. Schlägt die Funktion fehl, wird der NULL-Zeiger zurückgegeben. Also sollten wir dies auch überprüfen mittels......

if(image==NULL){ fprintf(stderr, "Konnte kein Image erstellen\n"); exit(0); }

2. Farben definieren

 white=gdImageColorAllocate(image,0,0,0);   /*Weiss*/

Hiermit allozieren wir die Farbe Weiss. Wir können nun mit der Variable white, an der richtigen Stellen weisse Farbe erzeugen. Wir gehen darauf noch etwas genauer ein.

3.Zeichnen

Wir Zeichnen hier 4 Rechtecke in unser 100x100 Pixel erzeugtes Image....

gdImageRectangle(image,1,1,49,49,yelow);

Wobei die Angabe in rectangle 1,1 bedeutet die linke obere Ecke und 49,49 die linke untere Ecke. In diesem Bereich wird ein Rechteck gezeichnet. Am Ende geben wir noch die Variable yelow an, die wir mit der Farbe gelb alloziert haben. Also ein gelber Rahmen. Als nächstes füllen wir den Bereich...

gdImageFill(image,25,25,red);

Wobei die Füllfunktion nicht so übergenau ist wie sie bemerken. Auch wenn sie die Koordinaten 30,30 angegeben hätten wäre das Rechteck mit rot ausgfüllt worden. Wichtig ist nur das die Koordinaten im gewünschten Bereich sind. Auch darauf gehen wir noch genauer ein.

Wenn alles gezeichnet wurde verwenden wir.....

png = fopen("bild1.png","wb");

"wb" dient für die Portabilität von Betriebssystemen die zwischen Binär.-und-Textdateien unterscheiden. Unter Linux hat das "b" kein Bedeutung.

4.Format festlegen

gdImagePng(image,png);

Spricht glaube ich vorerst mal für sich. Wir kommen noch darauf zurück.

Das war nun ein erster grober Überblick wie man das GD-Modul verwendet. In den nächsten Kapiteln wollen wir noch etwas mehr ins Detail der einzelnen und auch anderen Funktionen gehen.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf