我想處理一個JPEG圖像(大約600+,範圍從50k到500k)的目錄使用PHP:GD來調整大小和保存圖像,但我已經打了一點點在整個過程中很早就陷入困境。在正確處理了3張圖像(30K,18K和231K)後,我得到一個允許的內存大小爲16777216字節耗盡 PHP致命錯誤。PHP GD允許的內存大小用盡
我騎自行車經過圖像並調用下面的代碼:
list($w, $h) = getimagesize($src);
if ($w > $it->width) {
$newwidth = $it->width;
$newheight = round(($newwidth * $h)/$w);
} elseif ($w > $it->height) {
$newheight = $it->height;
$newwidth = round(($newheight * $w)/$h);
} else {
$newwidth = $w;
$newheight = $h;
}
// create resize image
$img = imagecreatetruecolor($newwidth, $newheight);
$org = imagecreatefromjpeg($src);
// Resize
imagecopyresized($img, $org, 0, 0, 0, 0, $newwidth, $newheight, $w, $h);
imagedestroy($org);
imagejpeg($img, $dest);
// Free up memory
imagedestroy($img);
我試圖釋放與imagedestroy
功能的內存,但它似乎並沒有產生任何影響。該腳本只是在imagecreatefromjpeg
代碼行處始終持續窒息。
我檢查了php.ini和memory_limit = 16M
設置似乎它保持正確。但我無法弄清楚爲什麼記憶被填滿。它不應該將內存釋放回垃圾回收器嗎?我真的不想增加memory_limit設置。這似乎是一個糟糕的解決方法,可能會導致未來出現更多問題。
僅供參考:我從命令提示符運行我的腳本。它不應該影響功能,但可能會影響你的反應,所以我想我應該提到它。
任何人都可以看到,如果我只是缺少一些簡單的東西,或者如果這裏有設計缺陷?你會認爲這將是一個非常簡單的任務。這當然是可以的,對吧?
我會試試這個。我的猜測是它會在這個過程的後期出錯。我希望我錯了。 – gurun8 2010-05-13 15:56:39
我錯了。這工作。謝謝。 – gurun8 2010-05-13 16:06:35
我想我應該剛發佈了什麼而不是爲什麼要做。 – JYelton 2010-05-13 16:07:59