Da die genutzten Bilder auf einer Internetseite immer größer werden, ist es oftmals nicht sinnvoll, die Hauptbilder per HTML/CSS skaliert auch als Thumbnails anzubieten. Meist sind aufgrund der besseren Darstellbarkeit quadratische Thumbnails besser einzusetzen als maßstabgetreu skalierte.
Hierbei hilft das folgende kleine Snippet:
list($w, $h) = getimagesize($picpath); // --- Bildgröße Ausgangsbild
$sc = imagecreatefromjpeg($picpath); // --- Originalbild einlesen
$nw = min($h, $w);
if ($h<$w) {
$x = bcdiv($w-$h, 2); // --- Landscape => Y=0, X berechnen
$y = 0;
}
else {
$x = 0; // --- Portrait => X=0, Y berechnen
$y = bcdiv($h-$w, 2);
}
$qu = imagecreatetruecolor($nw, $nw);
ImageCopy($qu, $sc, 0, 0, $x, $y, $nw, $nw); // --- Bild quadratisch zuschneiden
$th = imagecreatetruecolor($size, $size);
imagecopyresampled($th, $qu, 0, 0, 0, 0, $size, $size, $nw, $nw); // --- Bild skalieren
header('Content-Type: image/jpeg'); // --- Header mit Content-Type senden
imagejpeg($im); // --- Bild ausgeben
imagedestroy ($qu); // --- Speicher freigeben
Soll das Bild gespeichert werden sieht’s ab Zeile 19 so aus (die Header-Zeile fällt weg):
imagejpeg($im, $pic-mit-pfad.jpg); // --- Bild speichern imagedestroy ($qu); // --- Speicher freigeben
Hinweis: Sollte auf dem Webspace ImageMagick installiert sein, kann man sich noch ein paar Programmzeilen sparen. Wie steht hier (klick)!
Vielen Dank für’s Lesen!
