Lieber Stefan,
ich habe genau das vor ein paar Tagen gemacht. Hier mein Code:
Datei "thumbnails.php"
<?php
//===================
// Thumbnails erstellen
//===================
//
// Verwendung:
// thumbnails.php?pfad=images/beispiel.jpg&maxx=100&maxy=100
//
// "pfad" enthält den _relativen_ Pfad zum Bild
// "maxx" ist die maximale Breite
// "maxy" ist die maximale Höhe
// übertragene Parameter auswerten
$pfad = "";
if(isset($_GET['pfad'])) $pfad = $_GET['pfad'];
$maxx = 100;
if(isset($_GET['pfad'])) $maxx = abs($_GET['maxx']);
$maxy = 100;
if(isset($_GET['pfad'])) $maxy = abs($_GET['maxy']);
// Bilddatei ausmessen
if($pfad == "")
{
die("kein Pfad!");
}
else
{
$bildtyp = exif_imagetype($pfad);
$bilddimensionen = getimagesize($pfad);
$originalx = $bilddimensionen[0];
$originaly = $bilddimensionen[1];
switch($bildtyp)
{
case IMAGETYPE_JPEG:
$bild = imagecreatefromjpeg($pfad);
break;
case IMAGETYPE_GIF:
$bild = imagecreatefromgif($pfad);
break;
case IMAGETYPE_PNG:
$bild = imagecreatefrompng($pfad);
break;
default:
$bild = imagecreatetruecolor($maxx, $maxy);
}
}
// Skalierung vornehmen
$ratio = $originalx / $originaly;
if($bilddimensionen[0] > $maxx && isset($_GET['maxx']))
{
$bilddimensionen[0] = $maxx;
$bilddimensionen[1] = floor($maxx / $ratio);
}
if($bilddimensionen[1] > $maxy && isset($_GET['maxy']))
{
$bilddimensionen[1] = $maxy;
$bilddimensionen[0] = floor($maxy * $ratio);
}
// Thumbnail erstellen
$thumbnail = imagecreatetruecolor($bilddimensionen[0], $bilddimensionen[1]);
$weiss = imagecolorallocate($bild, 255, 255, 255);
imagecopyresampled($thumbnail, $bild, 0, 0, 0, 0, $bilddimensionen[0], $bilddimensionen[1], $originalx, $originaly);
// Thumbnail ausgeben
header("content-type: image/jpeg");
imagejpeg($thumbnail);
imagedestroy($thumbnail);
?>
Hoffentlich nützt Dir der Code für Dein eigenes Vorhaben.
Es sei aber angemerkt, dass eine häufige Nutzung dieses Scripts (besonders bei größeren Bilddateien!) die Rechenlast des Servers in die Höhe treibt, was Deinen Provider nicht unbedingt freuen muss!
Liebe Grüße aus Ellwangen,
Felix Riesterer.