ein Kapitel zurück                                           ein Kapitel weiter

Um nun zu testen ob Ihre Modul richtig Funktioniert, führen sie bitte folgendes Programm aus.........

#!/usr/bin/perl -w

use GD;

Übersetzen sie dies wie gewohnt. Sollten sie eine Fehlermeldung erhalten ist Ihr Modul nicht richtig oder gar nicht installiert. Falls alles glatt ging können wir loslegen.

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........

use GD;

# Neues Image erzeugen.
$image = new GD::Image(100,100);

# Einige Farben bereitstellen.
$white = $image->colorAllocate(255,255,255);
$black = $image->colorAllocate(0,0,0);
$red = $image->colorAllocate(255,0,0);
$blue=$image->colorAllocate(0,0,255);
$yellow = $image->colorAllocate(255,255,0);

# Hintergrund wird transparent und "interlaced".
$image->transparent($white);
$image->interlaced('true');

# Einen schwarzen Rahmen um das Bild zeichnen.
$image->rectangle(0,0,99,99,$black);

# Rechteck mit gelbem Rahmen am linken Eck
$image->rectangle(1,1,49,49,$yellow);
# und mit Rot füllen.
$image->fill(25,25,$red);
# Rechteck mit gelbem Rahmen am rechten oberen Eck
$image->rectangle(50,1,98,49,$yellow);
#Mit blau füllen
$image->fill(75,25,$blue);
#Linkes unter Eck
$image->rectangle(1,50,49,98,$yellow);
#blau füllen
$image->fill(25,75,$blue);
#Rechtes untere Eck
$image->rectangle(50,50,98,98,$yellow);
#Rot füllen
$image->fill(75,75,$red);

# Einen Binär-Stream sicherstellen.
binmode STDOUT;

# Image nach PNG umwandeln und über die Standardausgabe ausgeben.
print $image->png;

So siehts aus

Bild:gd1.png


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

/usr/bin/perl -w programmname.pl > bildname.png

...dann sollte sich in Ihrem Verzeichnis ein Bildchen wie oben befinden. So nun zu den einzelnen Schritten....

1.Neues Image erstellen oder laden

$image = new GD::Image(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 undef zurückgegeben. Also sollten wir dies auch überprüfen mittels......

$image = new GD::Image(100,100) or die ("Konnte kein Image erstellen");  

2. Farben definieren

$white = $image->colorAllocate(255,255,255);

Hiermit allozieren wir die Farbe Weis. Wir können nun mit der Variable $white, an der richtigen Stellen weise Farbe erzeugen. Wir kommen noch zu den Farben genauer.

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

$image->rectangle(1,1,49,49,$yellow);

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 $yellow an, die wir mit der Farbe gelb alloziert haben. Also ein gelber Rahmen. Als nächstes füllen wir den Bereich...

$image->fill(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.

Wenn alles gezeichnet wurde verwenden wir.....

binmode STDOUT;

...damit M$-Anwender ebenfalls ein Bild sehen können. binmode dient für die Portabilität von Betriebssystemen die zwischen Binär.-und-Textdateien unterscheiden.

4.Format festlegen
Image nach PNG umwandeln und über die Standardausgabe ausgeben.

print $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 Funktionen gehen.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf