Facebook Button Twitter Button YouTube Button RSS Button

IT-Runde

PHP Funktion: Vorschaubilder/Thumbnails erzeugen

  • PHP Funktion: Vorschaubilder/Thumbnails erzeugen

    Heute gibt es mal wieder etwas nützliches für die Programmierer unter euch! 🙂 Lässt man Besucher oder Nutzer mit dem eigenen Script Bilder hochladen wird es die verschiedensten Ergebnisse geben: Einige laden vielleicht nur ein Icon hoch, andere haben das Bild schon verkleinert und die letzten versuchen einfach das Originalbild von der Kamera mit einer Größe von 5MB und höher hochzuladen.

    Will man die Bilder dann z.B. als Avatar oder ähnliches ausgeben, müssen die großen Fotos als Beispiel in ihrer vollen Größe geladen werden um sie dann klein ausgeben zu lassen. Das die Ladezeiten sich dadurch drastisch erhöhen ist wohl jedem klar :D.

    Abhilfe schaffen dabei Thumbnails oder auch Vorschaubilder, die man beim hochladen des Bildes sofort erzeugen lassen sollte. Da man dieses Problem öfter hat, habe ich mir eine Funktion zusammen gebastelt! :cool:!

    Übergeben werden muss dieser nur das Originalbild ($image) (also das soeben hochgeladene), dann der Pfad wo das neue Bild gespeichert werden soll ($target) und zum Schluss die maximale Breite ($max_width) und Höhe ($max_height).

    Die Funktion:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
    // FUNKTION: Bilder auf passende Höhe und Breite verkleinern (Nur .jpg, .png und .gif)
    function vorschaubild_erzeugen($image, $target, $max_width, $max_height) {
    	// Funktion von IT-Runde.de
    	$picsize     = getimagesize($image);
    	if(($picsize[2]==1)OR($picsize[2]==2)OR($picsize[2]==3)) {
    	if($picsize[2] == 1) {
    	  $src_img     = imagecreatefromgif($image);
    	}
    	if($picsize[2] == 2) {
    	  $quality=100;
    	  $src_img     = imagecreatefromjpeg($image);
    	}
    	if($picsize[2] == 3) {
    	  $quality=9;
    	  $src_img     = imagecreatefrompng($image);
    	}
    	$src_width   = $picsize[0];
    	$src_height  = $picsize[1];
    	$skal_vert = $max_height/$src_height;
    	$skal_hor = $max_width/$src_width;
    	$skal = min($skal_vert, $skal_hor);
    	if ($skal > 1) {
    	 $skal = 1;
    	}
    	$dest_height = $src_height*$skal;
    	$dest_width = $src_width*$skal;
    	$dst_img = imagecreatetruecolor($dest_width,$dest_height);
    	imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);
    	if($picsize[2] == 1) {
    	  imagegif($dst_img, "$target");
    	}
    	if($picsize[2] == 2) {
    	  imagejpeg($dst_img, "$target", $quality);
    	}
    	if($picsize[2] == 3) {
    	  imagepng($dst_img, "$target", $quality);
    	}
    	}
    }

    Erst wird geschaut, welcher Dateityp verkleinert werden soll (deshalb sind auch nur gif, jpg und png-Bilder erlaubt). Danach wird ein neues Bild erzeugt aus dem originalen. Jetzt wird noch geschaut ob das Bild höher oder breiter ist und je nachdem werden die Seiten klein skaliert. Zum Schluss wird dann das errechnete Bild je nach Dateityp auf dem selbst definierten Pfad erzeugt.

    Welche Vorteile hat meine Funktion?

    • Maximale Breite/Höhe definieren (Das Bild ist nie Größer als man Platz definiert hat)
    • Keine Verzerrung von kleinen Bildern
    • Ausgabepfad kann selbst definiert werden
    • Unterstützt jpg, gif und png Bilder

    Ich benutze diese Funktion in einigen meiner Scripte und bisher wurden (Wenn man vorher alle nicht unterstützten Dateitypen abfängt) noch alle Bilder passend in Thumbnails umgewandelt. Ein Codebeispiel zur Übergabe wäre folgendes:



    Wie verkleinert ihr bisher eure Bilder in Thumbnails? Habt ihr vielleicht sogar eine schlankere Funktion? Uns interessiert eure Meinung!



  1. #1 Melanie
    22.03.2012 um 18:47 Uhr

    Sehr gut die Funktion!…
    Mache das bisher immer total aufwändig, mit der Funktion wird ja sogar mein Code übersichtlicher!

    Einfach nur Danke!

    Post ReplyPost Reply
  2. #2 Francesco
    26.03.2012 um 22:40 Uhr

    Sofort abgespeichert! 🙂

    Post ReplyPost Reply
  3. #3 Mainboarder
    01.04.2012 um 08:28 Uhr

    Ist übrigens sinnvoll den Kommentar für IDE´s besser darzustellen:

    /**
    * Kommentar
    *
    * param type $name Funktion
    */

    Post ReplyPost Reply
  4. #4 Andy
    10.12.2012 um 07:58 Uhr

    Perfekte Lösung!

    Post ReplyPost Reply
  5. #5 Michael
    19.08.2014 um 19:22 Uhr

    Wie rufe ich die die Funktion auf?

    Danke!

    Post ReplyPost Reply
Kommentar schreiben

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich stimme zu.