Felix Riesterer: Bilder verkleinern (Script oder Extension)

Beitrag lesen

Lieber Stefan,

ich habe genau das vor ein paar Tagen gemacht. Hier mein Code:

Datei "thumbnails.php"

  
<?php  
//===================  
// Thumbnails erstellen  
//===================  
//  
// Verwendung:  
// thumbnails.php?pfad=images/beispiel.jpg&maxx=100&maxy=100  
//  
// "pfad" enthält den _relativen_ Pfad zum Bild  
// "maxx" ist die maximale Breite  
// "maxy" ist die maximale Höhe  
  
// übertragene Parameter auswerten  
$pfad = "";  
if(isset($_GET['pfad'])) $pfad = $_GET['pfad'];  
$maxx = 100;  
if(isset($_GET['pfad'])) $maxx = abs($_GET['maxx']);  
$maxy = 100;  
if(isset($_GET['pfad'])) $maxy = abs($_GET['maxy']);  
  
// Bilddatei ausmessen  
if($pfad == "")  
   {  
   die("kein Pfad!");  
   }  
 else  
   {  
   $bildtyp = exif_imagetype($pfad);  
   $bilddimensionen = getimagesize($pfad);  
   $originalx = $bilddimensionen[0];  
   $originaly = $bilddimensionen[1];  
  
   switch($bildtyp)  
      {  
      case IMAGETYPE_JPEG:  
      $bild = imagecreatefromjpeg($pfad);  
      break;  
  
      case IMAGETYPE_GIF:  
      $bild = imagecreatefromgif($pfad);  
      break;  
  
      case IMAGETYPE_PNG:  
      $bild = imagecreatefrompng($pfad);  
      break;  
  
      default:  
      $bild = imagecreatetruecolor($maxx, $maxy);  
      }  
   }  
  
// Skalierung vornehmen  
$ratio = $originalx / $originaly;  
  
if($bilddimensionen[0] > $maxx && isset($_GET['maxx']))  
   {  
   $bilddimensionen[0] = $maxx;  
   $bilddimensionen[1] = floor($maxx / $ratio);  
   }  
if($bilddimensionen[1] > $maxy && isset($_GET['maxy']))  
   {  
   $bilddimensionen[1] = $maxy;  
   $bilddimensionen[0] = floor($maxy * $ratio);  
   }  
  
// Thumbnail erstellen  
$thumbnail = imagecreatetruecolor($bilddimensionen[0], $bilddimensionen[1]);  
$weiss = imagecolorallocate($bild, 255, 255, 255);  
imagecopyresampled($thumbnail, $bild, 0, 0, 0, 0, $bilddimensionen[0], $bilddimensionen[1], $originalx, $originaly);  
  
// Thumbnail ausgeben  
header("content-type: image/jpeg");  
imagejpeg($thumbnail);  
imagedestroy($thumbnail);  
?>  

Hoffentlich nützt Dir der Code für Dein eigenes Vorhaben.

Es sei aber angemerkt, dass eine häufige Nutzung dieses Scripts (besonders bei größeren Bilddateien!) die Rechenlast des Servers in die Höhe treibt, was Deinen Provider nicht unbedingt freuen muss!

Liebe Grüße aus Ellwangen,

Felix Riesterer.