Paul: Bild erzeugen: memory exhaust

Beitrag lesen

Hallo zusammen,

ich habe ein kleines Problem. Ich möchte ein Verzeichnis durchgehen und in diesem alle Bilder verkleinern und an einem anderen Ort speichern. Soweit kein Problem. Ich habe ein Skript, das auch funktioniert. Aber nur beim ersten Bild. Sobald das 2. Bild estellt werden soll, bricht er ab:

hallo3! hallo4! hallo8! hallo11! Grafik../../fotos/DSC01059.JPGerzeugt hallo3! hallo4!

Fatal error: Allowed memory size of 12582912 bytes exhausted (tried to allocate 8192 bytes) in verzeichniswodasuploadskriptliegt/upload6.php on line 101

Die betreffende Zeile im Skript ist: $src = imagecreatefromjpeg($file_name_src);

Wie gesagt, das erste Bild geht sofort durch und ist auch da, wo es sein soll, beim zweiten Durchlauf scheitersts. Meine verzweifelte Frage: warum?

Bin für jede Hilfe dankbar, Gruß, paul.

Hier noch das komplette Skript, auch wenn alle relevanten Teile oben schon stehen sollten:

<?php $verzeichnis = '../../fotos/zip'; $verzeichnisneu = '../../fotos'; $inhalt=opendir($verzeichnis); $i = 0; $bilder;

function getImagesFromPath($path)          {          $result = array();

$handle=opendir($path);

while ($file = readdir ($handle))                {                if ($file != "." && $file != "..")                   {                   if (! is_dir($file))                      {                      $tmp = strtolower($file);                      $sub = substr($tmp, -4);                      if ($sub == ".png" || $sub == ".jpg" || $sub == ".gif" || $sub == ".bmp")                      $result[] = $file;                      }                   }                }          return $result;          }

function resizeImage($file_name_src, $file_name_dest, $width=159, $height = 80, $quality=100)                     {                     if (file_exists($file_name_src)  && isset($file_name_dest))                        {

if ($width == 0 && $height == 0)                           {                           echo 'hallo0!<br>';                           return false;                           }

$est_src = pathinfo(strtolower($file_name_src));                        $est_dest = pathinfo(strtolower($file_name_dest));

$size = getimagesize($file_name_src);

if   ($height && ! $width)                             {                             $h = number_format($height, 0, ',', '');                             $w = number_format(($size[0]/$size[1])$height,0,',','');                             echo 'hallo1!<br>';                             }                        else if (! $height && $width)                                {                                $w = number_format($width, 0, ',', '');                                $h = number_format(($size[1]/$size[0])$width,0,',','');                                echo 'hallo2!<br>';                                }                        else {                             $h = number_format($height, 0, ',', '');                             $w = number_format($width, 0, ',', '');                             echo 'hallo3!<br>';                             }

if ($est_dest['extension'] == "gif" || $est_dest['extension'] == "jpg")                           {                           echo 'hallo4!<br>';                           $file_name_dest = substr_replace($file_name_dest, 'jpg', -3);                           $dest = imagecreatetruecolor($w, $h);                           imageantialias($dest, TRUE);                           }                        elseif ($est_dest['extension'] == "png")                               {                               $dest = imagecreatetruecolor($w, $h);                               imageantialias($dest, TRUE);                               echo 'hallo5!<br>';                               }                        else   {                               echo 'hallo6!<br>';                               return FALSE;                               }

switch($size[2])                              {                              case 1:      //GIF                              $src = imagecreatefromgif($file_name_src);                              echo 'hallo7!<br>';                              break;                              case 2:      //JPEG                              $src = imagecreatefromjpeg($file_name_src);                              echo 'hallo8!<br>';                              break;                              case 3:      //PNG                              $src = imagecreatefrompng($file_name_src);                              echo 'hallo9!<br>';                              break;                              default:                              echo 'hallo10!<br>';                              return FALSE;                              break;                              }                       imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);

switch($size[2])                             {                             case 1:                             case 2:                             imagejpeg($dest,$file_name_dest, $quality);                             echo 'hallo11!<br>';                             break;                             case 3:                             echo 'hallo12!<br>';                             imagepng($dest,$file_name_dest);                             }                       imagedestroy($dest);                       return TRUE;                       }                     return FALSE;                     }

$source = $verzeichnis; $data = getImagesFromPath($source); $width = 150; $height = 80;

if (!$data)    {    echo 'Mist!<br>';    }

foreach($data as $name)        {        $in  = $verzeichnis."/".$name;        $out = $verzeichnisneu."/".$name;        $ret = resizeImage($in, $out, $width, $height, $quality);        if   ($ret)             echo 'Grafik'.$out.'erzeugt<br>';        else echo "<font color='#FF0000'>Grafik $out konnte nicht erzeugt werden</font><br>\n";        } ?>