Live-Thumbnails mit PHP?

lukelukeluke

Erfahrenes Mitglied
Hallo zusammen,
Ich habe vor einiger Zeit angezangen, thumbnails mit PHP zu erstellen. Das hat auch super funktuioniert, mit der gd image library (o.ä.). Ich habe dann für jedes Bild ein zweites kleines file auf dem server gespeichert (gleich im upload prozess eingeschlossen).
Nun stellt sich mir aber die Frage, ob es möglich ist, mit PHP Thumbnails Live zu erstellen? Das heisst folgendes:
Beim Upload eines Bildes wird nur das Original abgespeichert.
Wenn nun ein Besucher auf die Homepage kommt und sich die Bilder Thumbnails- Ansicht ansieht, werden die Bilder mit PHP automatisch erstellt. Die Thumbnails müssten dann irgendwie mit einer PHP Seite erstellt werden, z.B. so: getthumbnail.php?image=testimage.jpg. PHP würde dann immer das bild, welches mit $image übergeben wird direkt erstellen, und den Header als bild modifizieren.
Weiss jemand wie das geht / hat das schon mal jemand gemacht? Vielen Dank für eure Hilfe!
-luke
 
Möglich ist es. Dazu musst du einfach nur bei der entsprechenden imageX()-Funktion keinen Parameterwert für den „filename“-Parameter angeben.
Ob diese dynamische Generierung jedoch wirtschaftlich ist, bezweifele ich. Denn ich habe die Erfahrung gemacht, dass die dynamische Generierung sehr zeitaufwendig und ressourcentilgend ist. Daher würde ich davon eher abraten.
 
Ich glaub das hier koennte es tun:
PHP:
<?php
ob_start();
include("connectdb.php");
mysql_select_db($dbname,$db);
if (isset($_GET['id']))
	{
		$imageid=$_GET['id'];
	}
if (isset($imageid))
	{
		$images=mysql_query("select * from images where id='$imageid'",$db);
		$image=mysql_fetch_assoc($images);
		$galleries=mysql_query("select * from galleries where id='".$image['gallery']."'",$db);
		$gallery=mysql_fetch_assoc($galleries);
		header("Content-Type:image/jpeg");
		$sourceimage=imagecreatefromjpeg("images/".$gallery['gallery']."/".$image['filename']);
		$thumbwidth=90;
		$thumbheight=round($thumbwidth*($height/$width));
		$thumbimage=imagecreatetruecolor($thumbwidth,$thumbheight);
		imagecopyresampled($thumbimage,$sourceimage,0,0,0,0,$thumbwidth,$thumbheight,$width,$height);
		imagejpeg($thumbimage);
	}
$db=mysql_close($db);
ob_end_flush();
?>

Ich geb keine Garantie ob das wirklich damit geht, hab das Script nur mal eben aus meinen Upload- und Anzeige-Scripts zusammengeklebt.
 
Dafür brauchst du ein PHP-Datei, die sich nur um das erzeugen und anzeigen des Thumbnails kümmert. Diese Datei rufst du dann wie folgt auf:

Code:
<img src="thumbnail.php?id=123" />

In dieser thumbnail.php darf dann nur das Bild "ausgegeben" werden.

Ich würde diese Methode nicht empfehlen, da der Server bei häufigen Seitenaufrufen in die Knide gehen könnte ;-) Diese Lösung würde ich nur ansteuern, wenn der Speicherplatz den du zur Verfügung hast knapp ist. Sonst würde ich das Thumbnail immer nur beim Upload erstellen.
 
Der Speicherplatz ist schon knapp, jedoch brauchen die thumbs ja nicht viel. Hätte nur gedacht dass es einfacher wäre...
Da mir alle davon abraten nimm ich jetzt doch wieder die alte Methode - speichern des thubs auf dem server beim upload.
Wenn ich damit fertig bin werde ich vielleicht auch noch das live-generieren ansehen, dann kommt die Lösung hierhin.
Danke euch!
Gruss, luke
 
Wenn Du Zeit und Lust hast kannst Du ja mal den von mir oben geposteten Vorschlag ausprobieren. Wuerde mich interessieren ob das so geht.
Hab leider zur Zeit keine Moeglichkeit zum testen.
 
Zurück