*Markus: Grafiken verkleinern bei zu großen Grafiken?

Beitrag lesen

Hallo,

ich musste feststellen, dass bei viel zu großen Grafiken PHP mit der GD-Bibliothek Probleme hat, diese Grafiken zu verkleinern, aber wie verkleinere ich Grafiken, wenn diese nicht verkleinerbar sind? Ich kann es weder lokal noch auf meinem Webspace. Mir würde zwar nicht einfallen, Grafiken, die 1.5MB groß sind, mit PHP bearbeiten zu wollen, aber wenn dritte, wie Kunden, auf solche Ideen kommen, wüsste ich jetzt nicht, wie ich es verhindern soll.
Zur Zeit verwende ich folgende Klasse, um Bilder aus einem Orginalverzeichnis automatisch für ein Thumbnail-Verzeichnis verkleinern zu lassen:

  
  
<?php  
  
  
   class VorschaubildGenerator   {  
  
     private $verkleinerungsFaktor = 0.2;  
     private $vorschauFotoVerzeichnis = 'fotosPreview';  
  
//    Gibt das verkleinerte Bild zurück  
        public function minimizePicture($bigPicFilename, $year)   {  
         $sourceImage = '';  
         //Bild auslesen, Grafiktyp: 1=GIF, 2=JPG, 3=PNG, 4=SWF  
            list($width, $height, $grafiktyp) = getimagesize($bigPicFilename);  
            $new_width = $width * $this->verkleinerungsFaktor;  
   $new_height = $height * $this->verkleinerungsFaktor;  
  
   // Resample  
   $destImage = imagecreatetruecolor($new_width, $new_height);  
  
   if ($grafiktyp == 1)   { //GIF  
    $sourceImage = imagecreatefromgif($bigPicFilename);  
    imagecopyresampled($destImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, $width, $height);  
    imagegif($destImage, $this->vorschauFotoVerzeichnis .  
                DIRECTORY_SEPARATOR .  
                $year .  
                DIRECTORY_SEPARATOR .  
                basename($bigPicFilename), 100);  
   }  
  
   if ($grafiktyp == 2)   {  //JPG  
    $sourceImage = imagecreatefromjpeg($bigPicFilename);  
    imagecopyresampled($destImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, $width, $height);  
    imagejpeg($destImage, $this->vorschauFotoVerzeichnis .  
                DIRECTORY_SEPARATOR .  
                $year .  
                DIRECTORY_SEPARATOR .  
                basename($bigPicFilename), 100);  
   }  
   if ($grafiktyp == 3)   {  //PNG  
    $sourceImage = imagecreatefrompng($bigPicFilename);  
    imagecopyresampled($destImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, $width, $height);  
    imagepng($destImage, $this->vorschauFotoVerzeichnis .  
                DIRECTORY_SEPARATOR .  
                $year .  
                DIRECTORY_SEPARATOR .  
                basename($bigPicFilename), 100);  
   }  
//   Den neuen Vorschaubildlink zurückliefern  
   return basename($bigPicFilename);  
        }  
   }  
?>  
  

Könnte ich hier irgendetwas einbauen, um mit dem Problem fertig zu werden?

--