Gleich große thumbnail on the Fly...?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gleich große thumbnail on the Fly...?

    Moin,

    ich hab seit einiger Zeit eine Gallery am laufen, die ich noch ein wenig verschönern möchte. Die Gallery habe ich mir aus verschiedenen Scripten zusammengezimmert (upload, thumbnails on the fly anzeigen, ansicht der bilder)...

    Die Thumbnails haben feste größen/breiten-angaben, das sieht bei mir deswegen ein bisschen blöd aus, weil ich viele verschiedenen Bildformate habe... Ich möchte, dass alles Thumbnails die gleiche Größe bekommen. Hab natürlich google bemüht, finde aber kein passendes Beispiel, das mir zeigt, wie ich mein Script dazu umschreiben müsste...

    hier mal das script, was die thumbnails erzeugt, verlinkt und anzeigt:
    Code:
    <?php>
    $verzeichnis 		=	'./pixxx';				//	Ordner der benützt werden
    													//	soll
    $bilder_ext			=	'gif|jpeg|jpg|png';			// 	Datei-Endungen die
    													//	angezeigt werden sollen
    													//	Nur Kleinbuchstaben!!!
    $thumb_breite		=	80;						//	max. Thumbnailbreite
    $thumb_hoehe		=	60;						//	max. Thumbnailhoehe
    $thumb_qualitaet	=	80;							//	Qualiät in Prozent
    $site_galerie_titel	=	'';			//	Titel
    $site_galerie_ppr	=	5;							//	Anzahl Bilder pro Linie
    $site_random_titel	=	'Random Picture Show';		// 	Titel
    $site_random_sek	=	3;							//	Anzahl Sekunden bis zum Bildwechsel
    // </Konfiguration>
    // AB HIER NICHTS MEHR AENDERN
    $version			=	'0.7';
    
    
    switch($_GET['action']){
    	case 'picture:thumb':
    		$filename = str_replace('/','',$_GET['file']);
    		if(file_exists($verzeichnis.'/'.$filename)){
    			$file = getimagesize($verzeichnis.'/'.$filename);
    			$hoehe_alt = $file[1];
    			$breite_alt = $file[0];
    
    			$h_div = $thumb_hoehe/$hoehe_alt;
    			$b_div = $thumb_breite/$breite_alt;
    			if($h_div<$b_div){
    				$hoehe_neu = $thumb_hoehe;
    				$breite_neu = $breite_alt*$h_div;
    			} else {
    				$hoehe_neu = $hoehe_alt*$b_div;
    				$breite_neu = $thumb_breite;
    			}
    			switch($file[2]){
    				case 1:
    					$src = imagecreatefromgif($verzeichnis.'/'.$filename);
    				break;
    				case 2:
    					$src = imagecreatefromjpeg($verzeichnis.'/'.$filename);
    				break;
    				case 3:
    					$src = imagecreatefrompng($verzeichnis.'/'.$filename);
    				break;
    			}
    			$dest	=	imagecreatetruecolor($breite_neu, $hoehe_neu);
    			imagecopyresampled($dest,$src,0,0,0,0,$breite_neu, $hoehe_neu,$breite_alt,$hoehe_alt);
    			header('Content-Type: image/jpeg');
    			echo imagejpeg($dest,'',$thumb_qualitaet);
    		} else {
    			die('Fehler: Dieses Bild existiert nicht!!!');
    		}
    	break;
    
    	case 'info':
    		echo 'phpNetz Gallery_'.$version;
    	break;
    
    	case 'info:version':
    		echo $version;
    	break;
    
    
    	// <Galerie>
    	case 'site:galerie':
    		$files = array();
    		$ext_tpl	=	explode('|',strtolower($bilder_ext));
    		$handle=opendir($verzeichnis);
    		while (false !== ($datei = readdir($handle))) {
    			if ($datei != "." && $datei != ".."){
    				$file_ext = str_replace('.','',strtolower(strrchr($datei,".")));
    				$ext_allowed	=	$ext_tpl;
    				while (list(, $ext_now) = each ($ext_allowed)){
    
    					if($ext_now == $file_ext){
    						$files[]		=	$datei;
    					}
    				}
    			}
    		}
    		closedir($handle);
    		echo "<html><head>\n<title>".$site_galerie_titel."</title>\n</head>\n<body><table border=\"0\" 
    align=\"left\" cellspacing=\"0\" cellpadding=\"0\"><tr align=\"left\"><td>";
    		echo '<h1>'.$site_galerie_titel.'</h1>';
    		$akt_p = 0;
    		while(list(,$file)=each($files)){
    			echo "<a target=\"_blank\" href=\"".$verzeichnis.'/'.$file."\"  rel=\"lightbox\">
    <img src=\"X-ausstellung.php?action=picture:thumb&file=".$file."\" alt=\"".$file."\" border=\"1\"></a>&nbsp;&nbsp;&nbsp;\n";
    			$akt_p++;
    			if($akt_p>=$site_galerie_ppr){
    				echo '<br>';
    				$akt_p = 0;
    			}
    		}
    		echo "</td>\n\n</tr>\n</table>\n</body>\n</html>\n";
    
    	break;
    
    }
    ?>
    vllt. hat ja jemand n tip...

    gruss

  • #2
    1. Dein Code schmeißt schon in der 1. Zeile einen Parseerror. Bissen mehr mühe ist gerne gesehen.

    Zum Verständnis "Gleiche Größe" heißt, dass du die Bilder beschneiden musst, oder strecken/stauchen, wenn sie unterschiedliche Formate haben.

    Also, Bildausschnitt aus dem Originalbild im neuen Seitenverhältnis ausschneiden, verkleinern und als neues Bild (Thumbnail) speichern.

    BTW: (viele) Thumbs sollte man nicht on the fly generieren.

    Bei konkreten Problemen helfe ich gerne weiter.

    Kommentar

    Lädt...
    X