2012-01-12 55 views
4

我目前正在嘗試獲取一個表單,它將允許多個圖像上傳並使用PHP在服務器上調整大小。客戶端上傳的每張圖片大小約爲2.5mb。在php中調整多個圖像的大小不超過內存限制

我目前使用的是move_uploaded_file()函數。

將文件移動到服務器上沒有任何問題。當我嘗試裁剪時出現問題。我的主機上具有不ImageMagick的因爲它代表這個意願,我使用這個設置(不是所有的代碼只是什麼是相關的,這是一個循環與$width等變化對不同作物的大小)

$image_p = imagecreatetruecolor($width, $height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 
imagejpeg($image_p, $output_filename, 80); 

僅適用於2張圖片。如果有3個或更多的提交,我得到'內存耗盡'的錯誤。我已經研究了這個,因爲我的記憶限制是120MB。顯然imagecreatefromjpeg函數使用大量的內存,尤其是如果文件具有較大的分辨率(我的做法 - 爲什麼我需要它們裁剪/調整大小)。

有沒有人知道更有效的方法來完成這項任務?我研究過谷歌,但每個人都使用我的技術。

+1

您是否嘗試過使用_imagedestroy_原創('$ image')和調整('$ image_p')? – 2012-01-12 17:49:42

回答

5

使用imagedestroy清除與$形象,$ image_p關聯的任何內存:你做了處理後

$image_p = imagecreatetruecolor($width, $height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 
imagejpeg($image_p, $output_filename, 80); 
imagedestroy($image); 
imagedestroy($image_p);