Thumbnails speichern oder immer neu generieren?

Dörti.Hermi

Erfahrenes Mitglied
Hallo liebe tutorials.de-Gemeinde!

War ja schon lange nicht mehr hier, hab jetzt aber wieder mal ne Frage ;)

Ich habe ein neues Projekt, bei dem ich eine Bildergalerie erstellen soll. Is ja auch prinzipiell auch kein Problem, aber es stellt sich nun folgende Frage: Es handelt sich hier um mehrere GB Fotos, die auf dem Server landen. Nun sollte es ja von jedem Fotoalbum eine Ansicht geben, in der man die Thumbnails (so halt etwa 20 pro Seite) durchblättern kann, und wenn man sie dann anklickt, erscheint das Originialfoto, wie man das halt von Online-Fotoalben gewohnt ist.
Ist es nun sinnvoll, die Bilder gleich beim Upload mit Hilfe der GDlib (passendes Script habe ich schon einige Jahre im Einsatz) als Thumbnail am Server abzuspeichern (was ja eine Menge mehr Speicherplatz und Ordner-Wirr-Warr am Server bedeuten würde), oder die Thumbnails immer erst beim Aufruf der Seite zu generieren?
Zur zweiten Variante: Wie würde das denn überhaupt gehen mit PHP? Denn mein Script, das ich verwende, speichert die Bilder ja alle am Server. Hab hier auch noch ein tutorial gefunden, mit dem das gehen sollte (oder?)

Und noch prinzipiell eine Frage: Gibt es in den Weiten des WWW vielleicht fertige "Bausätze", die man in die Website einbinden kann und so ein fertiges Fotoalbum erhält (also auch mit so einer Art CMS, wo die Fotos raufgeladen, getaggt, usw. werden können...)?

Vielen Dank schon mal im Voraus,
Lg Andi
 
Mach das am besten direkt nach dem Hochladen. Dies erst beim ersten Aufruf oder gar bei jedem Aufruf der Bilder zu machen, ist zwar möglich, kostet aber unnötig Zeit und insbesondere bei letzterem unnötig Rechenleistung. Das bisschen zusätzlicher Speicher ist da schon eher zu verkraften.
 
Hallo!

Ich bin für speichern.
Die Thumbnails müssen nur einmal erstellt werden und i.d.R. nur einmal (pro Empfänger) übertragen werden.
Das spart Bandbreite und belastet den Server weniger.

Dynamische Thumbnails.....
Die müssen bei jedem Seitenaufruf neu erstellt werden, egal ob sich etwas geändert hat oder nicht.
Dem ensprechend ist die Serverauslastung höher und Bandbreite wird unnötig verbraucht.

Dateigrösse.....
Thumbnails sollen nur eine grobe Vorschau darstellen.
Höhe, Breite und Qualität können also entsprechend gering ausfallen.
Somit ist auch die Dateigrösse kleiner.

Wirrwarr.....
Ist alles nur eine Frage der Organisation.
Entweder legt man für die Thumbnails ein eigenes Verzeichnis an und gibt ihnen den gleichen Dateinamen wie den Originalen, oder man hängt ihnen ein Präfix (z.B. "th_") an.

Bausätze.....
Woher soll der Ersteller des Bausatzes wissen wie Du Deine Seite aufgebaut hast?
Ist praktisch unmöglich.
Einen Bausatz den Du in Deine Seite einbauen kannst, wird es also nicht geben.
Es sei denn Du nimmst eines von den bekannte CMS.
Andernfalls kann es sich bei dem Bausatz nur um ein eigenständiges Objekt handeln.

Tutorial.....
Bei dem dort genannten Script kann man wählen ob die Thumbnails gespeichert oder bei jedem Seitenaufruf neu generiert werden sollen.
Bedenke aber dass das Script schon 3 Jahre alt ist, es könnte also sein dass es nicht mehr auf dem heutigen Stand der Dinge ist.

Gruss Dr Dau
 
Ich hab bei meinen Seiten meistens neu generierte Thumbs, wobei ich das eher von der Besucheranzahl abhängig mache. Ab ca 500 pro Tag würde ich die beim Upload erzeugen.
Eine Art Bausatz gibt es schon, nämlich ein relativ universelles Script, das bei mir schon seit Jahren unverändert auf zig Seiten seinen Dienst tut.

thumbs.php:
PHP:
header("Content-Type:image/jpeg", true);
$quality = 85;
$maxb = $_GET[maxb];
$maxh = $_GET[maxh];
$bild = imagecreatefromjpeg("galerie/$_GET[pfad]/$_GET[bild]"); //Pfad anpassen
$alt_breite = imagesx($bild);
$alt_hoehe = imagesy($bild);

if ($alt_breite <= $alt_hoehe){
	$neu_hoehe = $maxh;
	$neu_breite = round(($neu_hoehe * $alt_breite) / $alt_hoehe);
	if ($neu_breite > $maxb){
		$faktor = $neu_breite / $maxb;
		$neu_breite = $maxb;
		$neu_hoehe = $neu_hoehe / $faktor;
	}
}else{
	$neu_breite = $maxb;
	$neu_hoehe = round(($neu_breite * $alt_hoehe) / $alt_breite);
	if ($neu_hoehe > $maxh){
		$faktor = $neu_hoehe / $maxh;
		$neu_hoehe = $maxh;
		$neu_breite = $neu_breite / $faktor;
	}
}
	
$thumb = imagecreatetruecolor($neu_breite, $neu_hoehe);
imagecopyresampled($thumb, $bild, 0, 0, 0, 0, $neu_breite, $neu_hoehe, $alt_breite, $alt_hoehe);
imagejpeg($thumb,"",$quality);

Aufgerufen wird das ganze dann so:
PHP:
<img src="thumb.php?bild='.$bild.'&pfad='.$galerie.'&maxb=100&maxh=100" border="0">
// $bild ist der Dateiname
// $galerie ist der Verzeichnisname
// $maxb und $maxh sind die maximalen Größen, in denen das Bild angezeigt werden soll
Das ganze hat den Vorteil, daß du auch auf Bildschirmauflösungen und verschiedene Einsatzbereiche reagieren kannst, ohne jeweils alle Größen vorrätig halten zu müssen.
 
Zurück