Dieses Skript dient zum Erstellen von Vorschaubildern auf einem Webserver.
Das Skript benötigt Ausführ- und Schreibrechte.
Zusätzlich muss auf dem Webserver die GD-Bibliothek installiert sein.
<?php // Bildtyp mit korrektem Image Loader und Saver verknüpfen // - erleichtert das spätere Hinzufügen weiterer Typen // - erleichtert das Lesen der Funktion const IMAGE_HANDLERS = [ IMAGETYPE_JPEG => [ 'load' => 'imagecreatefromjpeg', 'save' => 'imagejpeg', 'quality' => 100 ], IMAGETYPE_PNG => [ 'load' => 'imagecreatefrompng', 'save' => 'imagepng', 'quality' => 0 ], IMAGETYPE_GIF => [ 'load' => 'imagecreatefromgif', 'save' => 'imagegif' ] ]; /** * @param $ src - ein gültiger Dateispeicherort * @param $ dest - ein gültiges Dateiziel * @param $ targetWidth - gewünschte Ausgabebreite * @param $ targetHeight - gewünschte Ausgabehöhe oder null */ function createThumbnail($src, $dest, $targetWidth, $targetHeight = null) { // 1. Lade das Bild aus dem angegebenen $ src // - Überprüfe, ob die Datei tatsächlich vorhanden ist // - Überprüfe, ob es sich um einen gültigen Bildtyp handelt // - Lade die Bildressource // erhalte den Typ des Bildes // Wir brauchen den Typ, um den richtigen Loader zu bestimmen $type = exif_imagetype($src); // wenn kein gültiger Typ oder kein Handler gefunden wurde -> exit if (!$type || !IMAGE_HANDLERS[$type]) { return null; } // lade das Bild mit dem richtigen Loader $image = call_user_func(IMAGE_HANDLERS[$type]['load'], $src); // kein Bild am angegebenen Ort gefunden -> beenden if (!$image) { return null; } // 2. Erstelle eine Miniaturansicht und ändern Sie die Größe des geladenen $ image // - Bildabmessungen abrufen // - Definiere die Ausgabegröße entsprechend // - Erstelle ein Miniaturbild basierend auf dieser Größe // - Alpha-Transparenz für GIFs und PNGs festlegen // - zeichne das letzte Miniaturbild // Originalbildbreite und -höhe abrufen $width = imagesx($image); $height = imagesy($image); // Seitenverhältnis beibehalten, wenn keine Höhe eingestellt ist if ($targetHeight == null) { // Verhältnis von Breite zu Höhe ermitteln $ratio = $width / $height; // wenn ist Hochformat // Verhältnis zur Skalierungshöhe verwenden, um in das Quadrat zu passen if ($width > $height) { $targetHeight = floor($targetWidth / $ratio); } // wenn ist Querformat // Verhältnis zur Skalierungsbreite verwenden, um in das Quadrat zu passen else { $targetHeight = $targetWidth; $targetWidth = floor($targetWidth * $ratio); } } // Erstelle eine Kopie basierend auf der berechneten Zielgröße $thumbnail = imagecreatetruecolor($targetWidth, $targetHeight); // Transparenzoptionen für GIFs und PNGs festlegen if ($type == IMAGETYPE_GIF || $type == IMAGETYPE_PNG) { // Bild transparent machen imagecolortransparent( $thumbnail, imagecolorallocate($thumbnail, 0, 0, 0) ); // zusätzliche Einstellungen für PNGs if ($type == IMAGETYPE_PNG) { imagealphablending($thumbnail, false); imagesavealpha($thumbnail, true); } } // Kopiere das gesamte Quellbild, um das Bild zu duplizieren und die Größe zu ändern imagecopyresampled( $thumbnail, $image, 0, 0, 0, 0, $targetWidth, $targetHeight, $width, $height ); // 3. Speiche das $ thumbnail auf der Festplatte // - rufe die richtige Speichermethode auf // - Stelle die richtige Qualitätsstufe ein // speichere die doppelte Version des Bildes auf der Festplatte return call_user_func( IMAGE_HANDLERS[$type]['save'], $thumbnail, $dest, IMAGE_HANDLERS[$type]['quality'] ); } ?>
Das Skript kann nun mit:
<?php createThumbnail($original, $thumb, 160); ?>
Aufgerufen werden, um von $original ein $thumb zu erstellen. Die Angabe 160 ist die Größe in Pixel, die das Vorschaubild bekommt. Andere Werte sind zulässig.
Es sind Angaben mit und ohne Pfadangabe gültig.
Das Skript benötigt Ausführ- und Schreibrechte.
Wie hat Dir der Beitrag gefallen?
Bewertung: 5/5 - abgegebene Bewertungen: 1