von | Blog, PHP

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!

Kommentare sind geschlossen.