Thumbnails - "kroppen"

lll192837465lll

Erfahrenes Mitglied
Hallo Zusammen

das thema thumbnails von bildern wurde ja schon sehr oft besprochen, ich habe mich auch schon durchgegoogelt, aber zu meinem spezifischen problem habe ich irgendwie keine Lösung gefunden.

Problem:

Ich würde gerne von einem grossen Bild einen (durch php) definierten Teil ausschneiden (kroppen). Das heisst, z.b. von dem hochgeladenen Bild wird automatisch ein 70x70 grosses thumb von links oben ausgeschnitten, oder von der mitte. Hauptsächlich ist, dass es dynamische werte sind, welche sich an das bild anpassen. ein Links oben gibt es ja immer, aber zum Beispiel einen hohen x wert gibt es nicht immer. Also ihr wisst sicher was ich meine :)

Da ich verschiedene formate von bildern hochlade (breite / höhe), würde es mir imens von nutzen sein, wenn man dies so schneiden könnte.

Kennt jemand so eine funktion in php?, wo das bild automatisch geschnitten wird?

Vielen Dank
 
Hi,

Ich verwende für meine Thumbs folgende funktion:
Diese erzeugt ein Thumbnail von der Mitte.
Nachteil ist, man kann nur eine Kantenlänge angeben.
Diese Funktion ist nicht sehr Dynamisch da sie nur JPEG behandelt. Ich habe sie aber auch schon auf GIF's angewendet ohne Probleme.
Dies Dynamisch anzupassen ist denk ich mal ein kleineres Problem.
PHP:
<?
function qThumb( $Bild, $ThumbKantenLaenge )
	{ 
	
    // Masse ermitteln 
	   $OriginalBildInfo   = getimagesize( $Bild );
       $OriginalBildBreite = $OriginalBildInfo[0];
       $OriginalBildHoehe  = $OriginalBildInfo[1]; 
	   $OriginalKantenLaenge = $OriginalBildBreite < $OriginalBildHoehe ? $OriginalBildBreite : $OriginalBildHoehe;

    // Temporaeres Bild vom Original erzeugen 
	   $TempBild = imagecreatefromjpeg( $Bild );     
    // Neues Bild erstellen
       $NeuesBild = imagecreatetruecolor( $OriginalKantenLaenge, $OriginalKantenLaenge ); 
    // Originalbild in neues Bild einfügen 
       if ($OriginalBildBreite > $OriginalBildHoehe)
	      {        
		  	imagecopy( $NeuesBild, $TempBild, 0, 0, round( $OriginalBildBreite-$OriginalKantenLaenge )/2, 0, $OriginalBildBreite, $OriginalBildHoehe );
	      }
		  	else if ($OriginalBildBreite <= $OriginalBildHoehe )
	      {        
		  	imagecopy( $NeuesBild, $TempBild, 0, 0, 0, round( $OriginalBildHoehe-$OriginalKantenLaenge )/2, $OriginalBildBreite, $OriginalBildHoehe );
	      }     
		$Thumbnail = imagecreatetruecolor( $ThumbKantenLaenge, $ThumbKantenLaenge );
	    imagecopyresampled( $Thumbnail, $NeuesBild, 0, 0, 0, 0, $ThumbKantenLaenge, $ThumbKantenLaenge, $OriginalKantenLaenge, $OriginalKantenLaenge );
    // Neues Bild ausgeben
	    imagejpeg( $Thumbnail, $Bild, 80 );
	    imagedestroy( $Thumbnail );
	} 
	
	
// Funktionsaufruf
foreach (glob( "*.jpg" ) as $Bild)
{    
	qThumb( $Bild, 90 );
}
?>
 
Zurück