Sie sind hier: Workshops PHP-Workshop

PHP-Workshop

PHP-Workshop Teil 3

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.






 Zurück zu: Workshops