Php-Code:
<?php
$groesse = 125; // Neue Maximalbreite bzw. -höhe
$bild['pfad'] = "test.jpg";
$info = getimagesize($bild['pfad']);
$bild['breite'] = $info[0];
$bild['hoehe'] = $info[1];
?>
Danach wird das Seitenverhältnis des Bildes bestimmt und die Abmessungen des Thumbnails berechnet.
Php-Code:
<?php
if ($bild['breite']>$bild['hoehe'])
{
$neuebreite = $groesse;
$neuehoehe = round($bild['hoehe']/$bild['breite']*$groesse);
}
else
{
$neuehoehe = $groesse;
$neuebreite = round($bild['breite']/$bild['hoehe']*$groesse);
}
?>
Nach diesen Berechnungen kann nun das eigentliche Bild erzeugt und ausgegeben werden.
Php-Code:
<?php
$quelle = imagecreatefromjpeg($bild['pfad']); // liest das Originalbild ein
$ziel = imagecreatetruecolor($neuebreite,$neuehoehe); // Erzeugt das Bild mit den Abmessungen des Thumbnails
imagecopyresampled($ziel,$quelle,0,0,0,0,$neuebreite,$neuehoehe,$bild['breite'],$bild['hoehe']);
/*
Kopiert das Originalbild in das neue Bild unter Berücksichtigung der neuen Größe.
Sollte die installierte GD-Lib nicht aktuell genug sein, kann stattdessen auch
imagecopyresized($ziel,$quelle,0,0,0,0,$neuebreite,$neuehoehe,$bild['breite'],$bild['hoehe']);
verwendet werden, allerdings ist dies qualitativ schlechter
*/
imagejpeg($ziel,'thumbnail.jpg',80); // Speichert das Bild auf dem Server im aktuellen Verzeichnis
/*
Alternativ kann das Bild auch direkt an den Browser ausgegeben werden:
header("Content-type: image/jpeg");
imagejpeg($ziel,"",80);
*/
?>
Verwendete Funktionen:
getimagesize()
imagecreatefromjpeg()
imagecreatetruecolor()
imagecopyresampled()
imagejpeg()
Weitere Informationen kann man sich in folgendem Buch holen, das liegt bei mir auch immer griffbereit zur Referenz an der Seite:
PHP 5 / MySQL 4 Studienhandbuch