PHP-Logo
Druckansicht von http://www.php-homepage.de/artikel/artikel12.html

PHP-Logo
[ Main Menue ]
Homepage
Downloads
Artikel
Scripts
Forum
PHP-Manual
Links
News
Freelancer
Bücher
RuDolF
Suche
Misc
Über diese Seite
Kontakt
Wunschzettel
MyGuestbook
*
[ Suche ]
*
[ Partner ]


Domain Webhosting
*
[ Partner Sites ]
Dynamic-Webpages
PHP-Center
PHP-Welt
phpUG.de
Random Link
*
[ Autoren gesucht! ]
PHP-Homepage.de sucht laufend Autoren für News und Artikel
Interesse?
*

Follow on Twitter - @phphomepage

RSS Feed blogoscoop

GD Library von Sascha G.

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 Supportenabled
GD Version1.6.2 or higher
FreeType Supportenabled
FreeType Linkagewith TTF library
GIF Supportenabled
JPG Supportenabled
PNG Supportenabled
WBMP Supportenabled

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.


Zurück zur Übersicht
© Copyright 1999 - 2011 by Mark Kronsbein | Impressum | NutzungsbedingungenWeiterempfehlen | Seitenanfang
0.0013