Hier ein kleines Snippet bzw. eine PHP Funktion um Thumbnails für Bilder zu erstellen, wahlweise mit Crop oder Resize Funktion :)
<?php /** * Create Thumbnails * * @param string $filename * @param string $filenameThumb * @param int $thumbSizeWidth * @param int $thumbSizeHeight * @param bool $crop * @return bool */ function mkthumb($filename, $filenameThumb, $thumbSizeWidth = 100, $thumbSizeHeight = 100, $crop = false) { //Set Filenames / Folders $srcFile = $filename; $thumbFile = $filenameThumb; //Determine the File Type $type = substr($srcFile, strrpos($srcFile, '.') + 1); //Create the Source Image switch ($type) { case 'jpg': $src = imagecreatefromjpeg($srcFile); break; case 'jpeg': $src = imagecreatefromjpeg($srcFile); break; case 'png': $src = imagecreatefrompng($srcFile); break; case 'gif': $src = imagecreatefromgif($srcFile); break; } //Determine the Image Dimensions $oldWidth = imagesx($src); $oldHeight = imagesy($src); //Crop: Calculate the New Image Dimensions if ($crop) { $original_aspect = $oldWidth / $oldHeight; $thumb_aspect = $thumbSizeWidth / $thumbSizeHeight; //If image is wider than thumbnail (in aspect ratio sense) if ($original_aspect >= $thumb_aspect) { $newHeight = $thumbSizeHeight; $newWidth = $oldWidth / ($oldHeight / $thumbSizeHeight); } //If the thumbnail is wider than the image else { $newWidth = $thumbSizeWidth; $newHeight = $oldHeight / ($oldWidth / $thumbSizeWidth); } //Create the New Image $new = imagecreatetruecolor($thumbSizeWidth, $thumbSizeHeight); //Transcribe the Source Image into the New (Square) Image imagecopyresampled($new, $src, 0 - ($newWidth - $thumbSizeWidth) / 2, 0 - ($newHeight - $thumbSizeHeight) / 2, 0, 0, $newWidth, $newHeight, $oldWidth, $oldHeight); } //Resize: Calculate the New Image Dimensions else { //If image is wider than thumbnail (in aspect ratio sense) if ($oldWidth >= $oldHeight) { $newWidth = $thumbSizeWidth; $newHeight = $oldHeight * $thumbSizeWidth / $oldWidth; } //If the thumbnail is wider than the image else { $newHeight = $thumbSizeHeight; $newWidth = $oldWidth * $thumbSizeHeight / $oldHeight; } //Create the New Image $new = imagecreatetruecolor($newWidth, $newHeight); //Transcribe the Source Image into the New Image imagecopyresampled($new, $src, 0, 0, 0, 0, $newWidth, $newHeight, $oldWidth, $oldHeight); } switch ($type) { case 'jpg': $src = imagejpeg($new, $thumbFile, 80); break; case 'jpeg': $src = imagejpeg($new, $thumbFile, 80); break; case 'png': $src = imagepng($new, $thumbFile, 80); break; case 'gif': $src = imagegif($new, $thumbFile, 80); break; } imagedestroy($new); return $src; } //Example Resize mkthumb('test.jpg', 'test_thumb.jpg', 1024, 1024, false); //Example Crop mkthumb('test.jpg', 'test_thumb.jpg', 200, 150, true); ?>