Dynamische Webseiten-Generierung, Vorlesung 3

<- Vorlesung 2 Übungen Vorlesung 4 ->


13) Bildbearbeitung

Achtung:
In PHP gibt es den Befehl ImageGif(). Dieser Befehl erzeugt ein GIF-Bild. Dazu werden Funktionen aus der frei erhältlichen Bibliothek gd verwendet. Die Firma Unisys hält die Rechte an einem Patent zur LZW-Komprimierung von Daten, die unter anderem auch bei der Erzeugung von GIF-Bilder eingesetzt wird. Da Unisys die unrechtmäßige Verwendung von LZW-Komprimierung momentan mit rechtlichen Schritten unterbindet, ist es in der neuen Version der Bibliothek gd nicht mehr möglich, GIF-Bilder zu erzeugen. Somit ist auch der PHP-Befehl ImageGif() wirkungslos.

Mit PHP können wir nicht nur HTML-Text erzeugen, wir können sogar Bilder dynamisch erzeugen. Zum Beispiel können wir eine Datei "bild.php3" erstellen, die ein Bild zurückliefern wird. In diese Datei schreiben wir keine HTML-Befehle, sondern ausschließlich PHP-Befehle. Ausschließlich heißt auch, daß vor dem ersten <?-Befehl nichts, auch kein Leerzeichen oder Leerzeile, stehen darf. Ansonsten ist der Browser sofort der Überzeugung, daß ein Textdokument ankommt.
Ein Beispiel:

<?
  Header( "Content-type: image/gif");
  $im = imagecreate(200,100);
  $blue = ImageColorAllocate($im, 0x2c,0x6D,0xAF);
  ImageFilledRectangle($im,0,0,200,100,$blue);
  ImageGif($im);
  ImageDestroy($im);
?>
Ruft man diese Datei auf, so erscheint ein blaues Rechteck. Natürlich kann diese Datei auch mit
<IMG SRC="bild.php3">
in eine HTML-Seite eingebunden werden.

Was bewirken obige Befehle? Der Befehl

  Header( "Content-type: image/gif");
teilt dem Browser mit, daß nun ein GIF-Bild kommen wird. (Um Fehlermeldungen in unserer PHP-Datei angezeigt zu bekommen, können wir diesen Befehl auch zeitweise auskommentieren, indem wir davor ein #-Zeichen setzen.)

Der Befehl

  $im = imagecreate(200,100);
erzeugt ein Bild, das 200 Pixel breit und 100 Pixel hoch ist.

Jede Farbe, die wir verwenden wollen, muß zuerst erzeugt werden. Dies geschieht mit dem Befehl

  $blue = ImageColorAllocate($im, 0x2c,0x6D,0xAF);
Dabei bezeichnet $im das Bild, für das wir die Farbe erzeugen wollen, während die restlichen drei Parameter die hexadezimalen RGB-Werte sind. (Man beachte die Schreibweise: 0x2c ergibt den dezimalen Rot-Anteil 36.)

Mit

  ImageFilledRectangle($im,0,0,200,100,$blue);
zeichnen wir ein ausgefülltes Rechteck, das bei 0,0 (links oben) beginnt und 200 Pixel nach rechts und 100 Pixel nach unten endet, und in der eben erzeugten Farbe $blue gefüllt ist.

Der Befehl

  ImageGif($im);
erzeugen zuerst ein GIF-Bild aus der internen Darstellung und sendet es an den Betrachter, während
  ImageDestroy($im);
den internen Speicherplatz für das Bild freigibt.

Es gibt nun eine Reihe von weiteren Möglichkeiten. Zum Beispiel kann noch ein Text in das Bild geschrieben werden:

	$white = ImageColorAllocate($im, 255,255,255);
	imagestring($im, 5, 20, 20, "Hallo",  $white);
Der erste Befehl erzeugt weiße Farbe: Man sieht, die RGB-Werte können auch als Dezimal-Werte angegeben werden. Der zweite Befehl schreibt den Text "Hallo" in Schriftgröße 5 beginnend bei Position 20,20 (20 Pixel nach rechts, 20 Pixel nach unten). Die beiden Befehle sollten direkt vor ImageGif($im); stehen.

Wer Lust auf mehr Bildbearbeitung bekommen hat, findet weitere Information im PHP-Handbuch. Über Rechtecke hinaus können die üblichen Elemente wie Kreisbögen, Linien, Polygone, Punkte verwendet werden.


<- Vorlesung 2 Übungen Vorlesung 4 ->

Alfred.Wassermann@uni-bayreuth.de