Voraussetzungen
Die hier gezeigten Beispiele basieren auf der GD-Library mit FreeType Support.
Mit phpinfo() kann einfach überprüft werden ob GD installiert ist. Bei mir sieht das ganze so aus:
| GD Support | enabled |
| GD Version | 1.6.2 or higher |
| FreeType Support | enabled |
| FreeType Linkage | with TTF library |
| GIF Support | enabled |
| JPG Support | enabled |
| PNG Support | enabled |
| WBMP Support | enabled |
Bei manchen Installationen (ab v1.8.4) gibt es aus Copyright-Gründen keine GIF-Unterstützung mehr. JPEG, PNG und WBMP werden aber weiterhin unterstützt.
Anmerkung
Aus oben genannten Copyright-Gründen werden hier keine GIF-Funktionen benutzt.
Grundsätzlich gilt aber die gleiche Vorgehensweise.
Möglichkeiten
MIt GD haben wir z.B. die Möglichkeit Grafiken in Ihrer Größe zu verändern (Thumbnails), Grafische Auswertungen
vorzunehmen oder Buttons on-the-fly zu erstellen.
1. Beispiel:
Fangen wir doch einfach mit einem kleinen Praxisbeispiel an. Mit der Funktion GetImageSize() können wir die Abmessungen einer Grafikdatei auslesen.
array getimagesize(string filename, array [imageinfo]);
GetImageSize() liefert uns ein Array mit 4 Elementen zurück.
Index 0
= Breite des Bildes in Pixeln
Index 1 = Höhe des Bildes in Pixeln
Index 2 = Information über das Bildformat (1=gif, 2=jpg, 3=png)
Index 3 = enthält einen String mit den Größenangaben (width=XXX height=XXX)
<? $size = GetImageSize("unbekannt.jpg"); ?>
<img src="unbekannt.jpg" <? echo $size[3]; ?>>
|
2. Beispiel
Die Informationen die wir mit GetImageSize() erhalten, können wir z.B. dazu verwenden um ein Bild proportional
in der Größe zu verändern. Durch den Index 2 wissen wir sogar um welches Bildformat es sich handelt.
Mit ImageCopyResize() kann man Bilder oder Bildbereiche kopieren und in der Größe verändern.
int imagecopyresized(int dst_im, int src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH);
$size=getimagesize("image.jpg");
$width=$size[0];
$height=$size[1];
if ($width > 100)
{
$newwidth = 100;
$newheight=intval($height*$newwidth/$width);
$oldimage=ImageCreateFromJPEG($image);
$newimage=ImageCreate($newwidth,$newheight);
ImageCopyResized($newimage,$oldimage,0,0,0,0,$newwidth,$newheight,$width,$height);
ImageJPEG($newimage,"image_neu.jpg");
}
|
Als Ergebnis erhalten wir ein Thumbnail mit einer Breite von 100 Pixeln, die Höhe wird proportional angepasst.
3. Beispiel
Nun wollen wir einen Button erstellen. Sicher wird man für die meisten Button GIFs verwenden, aber Ihr wisst ja .....
Um Text in eine Grafik zu schreiben bietet sich ImageTTFText() an.
Die Schriftfarbe stellen wor über ImageColorAllocate()
ein.
array ImageTTFText(int im, int size, int angle, int x, int y, int col, string fontfile, string text);
int imagecolorallocate(int im, int red, int green, int blue);
<?php
$dst_w = 100;
$dst_h = 15;
$text = "PHP-Homepage";
$dst_im = ImageCreate($dst_w, $dst_h);
$src_im = ImageCreateFromJPEG("leerer_button.jpg"); # enthält die Hintergrundebene
$schwarz = ImageColorAllocate($dst_im, 0, 0, 0);
ImageCopy($dst_im, $src_im, 0, 0, 0, 0, $dst_w, $dst_h);
ImageTTFText($dst_im, 12, 0, 4,11, $schwarz, "arial.ttf", $text); # arial.ttf liegt im selben pfad
ImageJPEG($dst_im, "ein_button.jpg");
ImageDestroy($dst_im);
ImageDestroy($src_im);
?>
|
Das Skript könnte u.a. wie folgt aufgerufen werden:
<img src="beispiel_3.php?text=php?text=php-homepage">
|
Mit diesem Beispiel ist es uns nun möglich komplette Tabellen grafisch aufzuarbeiten.

Wenn wir diese Daten aus einer Datenbank erhalten würden, bräuchten wir eine solche Grafik nur einmal
zu erstellen, den Rest erledigt das Skript und wir haben immer eine aktuelle Seite. Wer hat schon Lust
grafische Tabellen mit Photoshop zu ändern ?
Bemerkung
Mit diesen Beispielen sind die Möglichkeiten der GD- und TrueType Libraries natürlich längst nicht ausgeschöpft.
Wir haben gerade mal die Oberfläche angekratzt. Interessant wird es wenn wir anfangen Diagramme zu erstellen
oder Kurven zu berechnen.
|