yeahns: gd library, problem beim resizen

Beitrag lesen

hallo,

Ich habe folgende Funktion geschrieben. Bei manchen Bildern gibt es immer einen memory exhaust, was wohl soviel heisst wie Speicherüberlauf oder buffer overflow? Ach ja, die maximale größe liegt bei 40MB, die hab ich mit den hochgeladenen Bildern NICHT übertroffen.

Der Fehler ist immer bei "imagecreatefromjpeg($dir.$file), wie man an den auskommentierten Zeilen oben drüber sehen kann, hab ich die Übergabewerte schon getestet, sind ok, und funktioniert ja auch mit der Mehrzahl der Bilder. Eine Abhängigkeit des Erfolgs vom Dateinamen konnte ich nicht feststellen. Hier die Funktion:

function imgres($dir,$file,$dirdest,$x_res,$y_res,$qual)
{
    $q=$qual;
    //open the directory
    if (is_dir($dir) && file_exists($dir.$file)) {
        $dh = opendir($dir);
        $k=explode(".",$file);
        $endung = $k[count($k)-1];
        if (!is_dir($dirdest)) {mkdir($dirdest, 0777);}

if($endung == "jpg" || $endung = "jpeg") {
            $salva=$dirdest.$file;
            $image = $dir.$file;
            //$image='img/orig/2005-06 Jazzhaus Juni 2005/VoiceEvent jazzhaus 2005.jpg';
            //print_r($image);
            //echo "<br />";
            $im =imagecreatefromjpeg($image);
            $x=imagesx($im);
            $y=imagesy($im);
            if (empty($x_res)) { $x_res=round($x * ($y_res/$y)); }
            if (empty($y_res)) { $y_res=round($y * ($x_res/$x)); }
            $thumbnail=imagecreatetruecolor($x_res,$y_res);
            imagecopyresized($thumbnail,$im, 0, 0, 0, 0, $x_res, $y_res, $x, $y);
            imagejpeg($thumbnail, $salva, $q);
        }
        elseif($endung = "gif") {
            $salva=$dirdest.$file;
            $image=$dir.$file;
            $im =imagecreatefromgif("$image");
            $x=imagesx($im);
            $y=imagesy($im);
            $thumbnail=imagecreatetruecolor($x/$val,$y/$val);
            $im_ridimensionata=imagecopyresized( $thumbnail, $im, 0, 0, 0, 0, $x/$val,
            $y/$val, $x, $y);
            imagegif($thumbnail, $salva, $q);
        }
        elseif(strpos($k[1],"png")===0) {
            $salva=$dirdest.$file;
            $image=$dir.$file;
            $im =imagecreatefrompng("$image");
            $x=imagesx($im);
            $y=imagesy($im);
            $thumbnail=imagecreatetruecolor($x/$val,$y/$val);
            $im_ridimensionata=imagecopyresized( $thumbnail, $im, 0, 0, 0, 0, $x/$val,
            $y/$val, $x, $y);
            imagepng($thumbnail, $salva, $q);
        }
        else {
            echo "File/Folder $file not compatible(no jpg,gif or png)";
        }
        closedir($dh);
    }

}