2009-07-08 4 views
0

이미지를 업로드하고 이미지를 "resize"폴더에 넣고 이미지의 크기를 조정 한 다음 이미지를 다른 폴더로 이동 한 다음 이미지를 삭제할 코드를 사용하고 있습니다. "resize"폴더에서 다음 오류가 발생합니다.PHP 이미지를 업로드/크기 조정하는 중 오류가 발생했습니다.

"치명적 오류 :/home/photogra/public_html/administrator/components/com_gallery에서 메모리 크기가 33554432 바이트로 소모되었습니다 (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   }; 
또한

내가 그 오류를 얻을 때, 이미지가 "크기 조정"폴더에 갇혀지고 .. 경우 누구든지 도울 수있다, 그것은 환상적 일 것이다! :)

답변

2

각 이미지가 끝난 후 메모리를 비우지 않고 디렉토리의 모든 이미지의 크기를 조정하려고합니다. 추가해보기

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

처음에는. 또한 디렉토리를 두 ​​번 반복하지 말고 이미지를 끝내 자마자 이미지의 링크를 해제하십시오.

+0

도움 주셔서 감사합니다. 지금까지 작동하는 것 같습니다. :) – SoulieBaby

관련 문제