Thumbnail erstellt mit GD Lib Zurück zur Übersicht
Über den Autor
Willkommen und Hallo zu meinem zweiten Tutorial.
Zunächst definieren wir die maximale Größe, egal ob nun die Breite oder Höhe. Danach geben wie den Ort zu unserer Datei ein, welche wir gerne verkleinern wollen.
Durch das getimagesize bekommen wir die Angaben über die Abmessungen und durch den kleinen Code darunter, wird die Dateiendung extrahiert und in kleine Buchstaben umgewandelt.
Das Ratioskript ermittelt die neuen Abmessungen. (Ich weiß, wenn man es nicht auf Anhieb versteht, dauert es meist lange um doch dahinter zu kommen, es ist jedoch ganz einfach). Durch das ceil wird immer aufgerundet. Ansonsten könnte es bei sehr Hohen oder Breiten Bildern vorkommen, dass wir ein Problem bekommen, da genau die andere Größe unter 1 Pixel fallen könnte.
Solche Bilder können aus logischen Gründen, natürlich nicht angelegt werden.
Nun erzeugen wir einen Stream (php.net nennt es einen Bezeichner) von dem Bild. Also wir speichern das Bild in die Variable, mit der wir nun weiter arbeiten können.
Die weiteren Angaben, sollten fast schon selbst erklärend sein. Wir erstellen ein neues Bild und speichern unser Bild mit unseren neuen Abmessungen hinein.
Danach geben wir die Ressourcen durch ein imagedestroy wieder frei.
resize.php
<?php //Maximale Größe des Thumbnails und der Ort zu der Datei $ThumbWidth = 100; $Image = 'test.jpg'; //Pixel in Array speichern / Typ extrahieren if($FileExt == 'jpeg' || $FileExt == 'jpg' || $FileExt == 'png' || $FileExt == 'gif'){ //Optimale Größe ermitteln $Ratio = $Pixel['0'] / $Pixel['1']; if ($Ratio >= 1){ $NewWidth = $ThumbWidth; } else { $NewHight = $ThumbWidth; } //Bild einlesen if($FileExt == 'jpeg' || $FileExt == 'jpg'){ } elseif ($FileExt == 'png'){ } elseif ($FileExt == 'gif'){ } //Bild erstellen imagecopyresized ($ImageCreate, $Thumb, 0, 0, 0, 0, $NewWidth, $NewHight, $Pixel['0'], $Pixel['1']); echo 'Datei erfolgreich gespeichert.'; } else { echo 'Von dieser Datei kann kein Thumbnail erzeugt werden.'; } ?>
Dieses Tutorial funktioniert mit der GD library, die auf Space² vorhanden ist.
Persönlich nutze ich jedoch Imagick, welches meiner Meinung nach bessere Ergebnisse erzielen kann, wenn man weiß wie man damit umzugehen hat.
Bessere Qualität, einen kleineren Speicherbedarf, erheblich mehr unterstützte Bildformate, ... .
Jedoch ist dieses noch nicht auf Space² vorhanden, wenn sich dieses ändert, werde ich auch hierzu ein Tutorial schreiben.
Denkt jedoch nicht das GD schlecht ist. Jeder hat seine Favoriten.
Da der Code manchmal durch das System zerstört wird, könnt ihr es auch Hier herunterladen.