2009-07-08 64 views
0

我使用的代碼將上傳圖像,將圖像放在「調整大小」文件夾中,調整圖像大小,將圖像移動到另一個文件夾中,然後從圖像中刪除圖像「resize」文件夾,但是我收到以下錯誤:PHP上傳/調整圖像大小時出現致命錯誤

致命錯誤:允許內存大小33554432字節用盡(試圖分配14172字節)在/ home/photogra/public_html /管理員/組件/ com_gallery /admin.gallery.php on line 649

圖像並不大! (例如,265KB)

下面是我使用的代碼(與行號):

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   }; 

此外,當我得到這個錯誤,圖像被陷在「調整」文件夾中。如果任何人都可以提供幫助,那太棒了! :)

回答

2

您正嘗試調整目錄中的所有圖像的大小,而不會在每個圖像釋放後釋放內存。嘗試加入

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

對於初學者。此外,只要您完成了圖像,請立即取消鏈接,而不是第二次遍歷該目錄。

+0

感謝您的幫助,至今似乎工作正常...... :) – SoulieBaby 2009-07-08 00:59:46