Nicht nur Texte in Form von HTML-Seiten können mit PHP ausgegeben werden, sondern beliebige Dateien, die sich im Browser anzeigen lassen. Mit PHP sind eine Reihe an Funktionen mitgeliefert, mit denen man einige Dateitypen erstellen kann. Wir möchten uns in diesem Kapitel mit Grafiken beschäftigen und erfahren, wie GIF,PNG oder JPEG-Bilder von PHP verarbeitet bzw. erzeugt werden.
Fangen wir am Besten mit einem kleinen Beispiel an:
<?php // Beispiel für ein simples Bild header(“Content-type: image/png”); // Mime-Type setzen $im = imagecreate(155,155); // Erstellt ein rechteckiges // Bild mit 155 Pixel Kantenlänge $background_color = ImageColorAllocate ($im, 255, 255, 255); // erste Farbe ist Hintergrundfarbe $blue = imagecolorallocate($im, 0, 128, 255); // Blau $red = imagecolorallocate($im, 255,0,0); // Rot $yellow = imagecolorallocate($im, 255,255,0); // Gelb // drei gefüllte Rechtecke imagefilledrectangle ( $im, 5, 5, 100,100,$red); imagefilledrectangle ( $im, 75, 75, 150,150,$blue); imagefilledrectangle ( $im, 85, 20, 140,60,$yellow); imagepng($im); // Das Bild als PNG-Bild ausgeben imagedestroy($im); // Alle Resourcen, die wegen des Bildes gehalten werden, freigeben. ?>
Die Bildschirmausgabe wird wie folgt aussehen:

Da jede Zeile in dem obigen Programm kommentiert ist, möchte ich hier darauf verzichten, näher darauf einzugehen und möchte direkt hier weitermachen.
Wir möchten gerne den im vorherigen Kapitel erstellten Counter grafisch darstellen, so dass er toller aussieht. Zusätzlich bekommen wir die Funktionalität, dass wir ihn auch extern einbinden können, d.h. wir können aus HTML-Seiten heraus eine Grafik referenzieren und der Counter erscheint auf der HTML-Seite.
Wir erzeugen uns eine Rohvorlage für den Counter. In diese Rohvorlage wird später der Counter hineingebettet. Ich habe einmal eine ganz einfache Rohvorlage erstellt:

Zunächst macht das Skript dasselbe wie unser vorheriges Counterskript. Im Ausgabeteil gibt es jedoch den Counter nicht mehr einfach aus, sondern es wird die Rohvorlage eingelesen und der Counter an die entsprechende Stelle in dem Bild gesetzt.
<?php // —————– // Counterteil // —————– $counterfile = fopen (“stand.txt”,“r+”); flock ($counterfile,LOCK_EX); $canWrite = false; // Solange warten bis die Datei für das Schreiben freigegeben ist… while (!$canWrite) { $canWrite = flock($counterfile, LOCK_EX); } // Nun haben wir einen exklusiven Zugriff und wir können den // Counter auslesen und anschließen wieder in die Datei schreiben $counter = fgets ($counterfile); $counter = $counter + 1; fseek ($counterfile,0); // zurück auf Position 0 // obiger Befehl wird benutzt, um den Dateizeiger zu bewegen fputs ($counterfile,$counter); fclose ($counterfile); // —————— // Ausgabeteil // —————— Header (“Content-type: image/png”); $im = ImageCreateFromPNG (“rohcounter.png”); // öffnen der Rohdatei $white = ImageColorAllocate ($im, 255, 255, 255); // weißer Hintergrund $black = ImageColorAllocate ($im, 0, 0, 0); // schwarze schrift ImageTTFText ($im, 12, 0, 60, 50, $black, “arial.ttf”, $counter); // die Datei arial.ttf mit der Schrift muss // - falls nicht vorhanden - im Verzeichnis liegen ImagePng ($im); // Als PNG ausgeben ImageDestroy ($im); // Resourcen freigeben ?>
Das Ergebnis sieht nun wie folgt aus (Dies ist ein statisches Bild und es wird nicht gezählt.):

