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!