Dieses Beispielscript namens thumb.php erstellt Thumbnails, nach Möglichkeit mit den Maßen 120x90 oder 90x120px. Dazu ist erforderlich, dass auf dem Server die Bibliothek GD installiert ist. Nachprüfen lässt sich das durch die Funktion phpinfo().
In der Variable $src ist die Adresse des Bildes angegeben.
Die erstellten Thumbnails werden nicht abgespeichert, sondern direkt durch das Script ausgeschrieben. Der Vorteil davon ist, dass Speicherplatz auf dem Server eingespart wird. Auf der anderen Seite muss der Server womöglich mehr Rechenleistung erbringen, weil bei jedem Anfordern eines Thumbnails desselben Bildes jenes erneut erzeugt werden muss.
Das Script ist auch mit älteren Versionen von GD kompatibel!
thumb.php
<?php
//Den Header nur übermitteln, wenn dieses PHP Script in einer direkten Ausgabe des Biders resultieren soll
header("Content-type: image/jpeg");
$src = "path/to/image.jpg";
$quellbild = imagecreatefromjpeg($src);
$weite = imagesx($quellbild);
$hoehe = imagesy($quellbild);
// Je nach Proportion ist die Weite entweder 120 oder 90.
if($weite>$hoehe) {
$weiteth = 120;
$hoeheth = ($weiteth/$weite)*$hoehe;
}
else {
$weiteth = 90;
$hoeheth = ($weiteth/$weite)*$hoehe;
}
// Bei GD 2.x wird imagecreatetruecolor verwendet, ansonsten imagecreate
if(!@$thumb = imagecreatetruecolor($weiteth,$hoeheth)) $thumb = imagecreate($weiteth,$hoeheth);
// Statt imagecopyresized könnte man auch imagecopyresampled verwenden. Die Qualität davon ist wesentlich besser.
// Es ist allerdings erst in GD 2.x verfügbar und die Geschwindigkeit ist wesentlich langsamer.
imagecopyresized($thumb, $quellbild, 0, 0, 0, 0, $weiteth, $hoeheth, $weite, $hoehe);
imagejpeg($thumb);
// Wenn ihr das Bild nicht ausgeben wollt, sondern stattdessen auf eurem Webspace speichern wollt, dann verwendet hier imagejpeg($thumb, "path/to/destination.jpg") statt imagejpeg($thumb);
imagedestroy($thumb);
?>
// Für ein einheitliches Bild bei den Proportionen geht auch:
if($weite>$hoehe) {
$weiteth = 120;
$hoeheth = ($weiteth/$weite)*$hoehe;
}
else {
$hoeheth = 120;
$weiteth = ($hoeheth/$hoehe)*$weite;
}