Dynamische Webseiten-Generierung, Vorlesung 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:
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.
Keine Kommentare:
Kommentar veröffentlichen