我想处理一个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