2009-07-08 18 views
0

イメージをアップロードし、イメージを「サイズ変更」フォルダに入れ、イメージのサイズを変更し、イメージを別のフォルダに移動してからイメージを削除するコードを使用しています。しかし、私は次のエラーを取得しています、フォルダを「サイズを変更」:PHPイメージのアップロード/サイズ変更中に致命的なエラーが発生する

致命的なエラー:33554432バイトの許可メモリサイズが使い果たさは/ホーム/ photogra/public_htmlの/管理者/コンポーネント/ com_galleryに(14172バイトを割り当てしようとしました) /admin.gallery.php on line 649 "

画像は大きくありません。 (例えば265キロバイト)

ここで私は(行番号で)使用しているコードです:

635   move_uploaded_file($_FILES['image']['tmp_name'],$mainframe->getCfg('absolute_path') ."/virtualgallery/images/resize/$newname"); 
636   
637   /* resize images - width 600px */ 
638   $docRoot = $GLOBALS['mosConfig_absolute_path']; 
639   $pathToImages = $docRoot.'/virtualgallery/images/resize/'; 
640   $pathToThumbs = $docRoot.'/virtualgallery/images/'; 
641   $thumbHeight = 600; 
642   
643   $dir = opendir($pathToImages); 
644   while (false !== ($fname = readdir($dir))) { 
645    $info = pathinfo($pathToImages . $fname); 
646    if (strtolower($info['extension']) == 'jpg') { 
647     $img = imagecreatefromjpeg("{$pathToImages}{$fname}"); 
648     $width = imagesx($img); 
649     $height = imagesy($img); 
650     $new_width = floor($width * ($thumbHeight/$height)); 
651     $new_height = $thumbHeight; 
652     $tmp_img = imagecreatetruecolor($new_width, $new_height); 
653     imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
654     imagejpeg($tmp_img, "{$pathToThumbs}{$fname}"); 
655    }; 
656   }; 
657   closedir($dir); 
658   
659   /* delete file(s) from resize folder */ 
660   $dir = $docRoot.'/virtualgallery/images/resize/'; 
661   foreach(glob($dir.'*.*') as $v) { 
662    unlink($v); 
663   }; 

私はエラーを取得する場合にも、画像は「サイズを変更する」フォルダ内に立ち往生している。.. Ifは誰も助けることができる、それは素晴らしいだろう! :)

答えて

2

ディレクトリ内のすべてのイメージのサイズを変更しようとしていますが、各イメージの後にメモリを解放しないでください。試してみてください。

imagedestroy($img); 
imagedestroy($tmp_img); 

また、ディレクトリを二度目に繰り返すのではなく、終了したらすぐに画像のリンクを解除してください。

+0

あなたのおかげでありがとうございました。 – SoulieBaby

関連する問題