Systemvoraussetzung
- Linux
- Windows
- PHP 4 >= 4.0.6
- PHP 5
- GDLib
Datei(en)
create_thumb.php
Problem
Gerade wenn Sie eine Webseite mit sehr vielen Bildern besitzen, sollten Sie darauf
achten, dass Sie jeweils Vorschaubilder anzeigen und nicht die originalen
Bilder. In der Regel schauen sich Ihre Besucher nicht alle Bilder an, müssen
aber warten, bis alle Bilder geladen sind.
Je nach Größe Ihrer Bilder kann dieser Prozess eine Weile dauern. Nicht zu
unterschätzen ist auch der entstehende Traffic, der zu Ihren Lasten geht.
Wir zeigen Ihnen in diesem Beispiel eine Lösung auf, wie Sie aus JPG-,
PNG- und
GIF-Bildern
kleine Vorschaubilder erzeugen.
Lösung
Wir wollen hier zeigen, wie Sie aus einer großen Bilddatei ein Vorschaubild
erstellen. Dabei achten wir darauf, dass die Proportionen beibehalten werden.
function resizePicture($file, $width, $height)
@param string $file
@param integer $width
@param string $height
@return bool
Die Funktion resizePicture() erwartet als Parameter die Bilddatei ($file),
die maximal mögliche Bildbreite ($width) und die maximal mögliche Bildhöhe
($height). Im ersten Schritt überprüfen wir, ob die übergebene Datei existiert
(6) und brechen die Funktion ab (7), falls dies nicht der Fall ist.
Wir schicken dann einen Header (9) zum Browser, sodass er die Information
bekommt, dass im Anschluss ein JPG-Bild
übertragen wird. Für unsere weiteren
Berechnungen und Kontrollmechanismen benötigen wir noch Informationen
über das bestehende Bild (11). Wir ermitteln also mit getimagesize() folgende
Bildinformationen, die wir als Array erhalten.
- Breite des Bildes
- Höhe des Bildes
- Grafik-Typ -
1
= GIF, 2 = JPG, 3 = PNG, 4 = SWF
- HTMLZeichenkette -
"
height=xx width=xx"
Wir fragen jetzt im nächsten Schritt ab, um welchen Dateityp es sich handelt. 03:
04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
42:
43: 44: 45:
| function resizePicture($file, $width, $height)
{
if(!file_exists($file)) return false; header('Content-type: image/jpeg');
$info = getimagesize($file);
if($info[2] == 1) { $image = imagecreatefromgif($file); } elseif($info[2] == 2) { $image = imagecreatefromjpeg($file); } elseif($info[2] == 3) { $image = imagecreatefrompng($file); } else { return false; } if ($width && ($info[0] < $info[1])) { $width = ($height / $info[1]) * $info[0]; } else { $height = ($width / $info[0]) * $info[1]; }
$imagetc = imagecreatetruecolor($width, $height);
imagecopyresampled($imagetc, $image, 0, 0, 0, 0, $width, $height,
$info[0], $info[1]);
imagejpeg($imagetc, null, 100); }
|
Beispiel 9.3: create_thumb.php
Der eigentliche Aufruf für die Erzeugung der Bilder ist relativ simpel. Zunächst
benötigen wir den Pfad zum Bild oder den Dateinamen (47), die maximale
Bildbreite (49) sowie die maximale Bildhöhe (50). Mit all diesen Informationen
können Sie die Funktion resizePicture() aufrufen (52) und das Bild erstellen
lassen. 47:
48: 49: 50: 51: 52:
| $file = 'vorschaubilder/Tux.png';
$width = 100; $height = 50;
resizePicture($file, $width, $height); |
Beispiel 9.4: create_thumb.php
Falls Sie das Programm über eine Website aufrufen und nicht einzeln, sollten
Sie das Programm am besten folgendermaßen starten. So wird das Bild direkt
als Vorschaubild in Ihre Webseite eingebunden. 1:
|
<img src="create_thumb.php?file=Tux.png">
|
Sie müssen dann allerdings den Aufruf der Funktion folgendermaßen anpassen: 49:
50:
51:
52:
|
$width = 300;
$height = 200;
resizePicture($_GET['file'], $width, $height); |
Nachfolgend sehen Sie drei Bilder, die mit diesem Programmcode erzeugt
wurden. Dabei kann davon ausgegangen werden, dass sogar bei dem kleinsten
Bild die Qualität noch recht gut ist und es somit als Thumbnail herhalten kann.
Abbildung 9.1: Originalgröße: 685 x 476 Vorschaubildgröße: 100 x 69
Abbildung 9.2: Originalgröße: 685 x 476 Vorschaubildgröße: 200 x 138
Abbildung 9.3: Originalgröße: 685 x 476 Vorschaubildgröße: 300 x 208
Dieses Skript aus dem SELFPHP KOCHBUCH wurde von SELFPHP unter dem "Tarif Mc500" von McAc.net-Webhosting erfolgreich ausgeführt und getestet!
Auf der Übersichtseite unter "McAc.net – Webhosting zu diesem Buch" finden Sie weitere Informationen zu dem Webhostingpaket, dass durch SELFPHP getestet wurde.
|