我在共享主机上使用imagecreatefromjpeg,所以如果图像很大,那么imagecreatefromjpeg会给我一个“out of memmory error”并终止脚本。
无论如何都要抓住memmory错误,只是让imagecreatefromjpeg失败(返回false)而不是终止脚本?
答案 0 :(得分:3)
首先尝试计算图像的大小:http://uk3.php.net/function.getimagesize我相信如果图像在任何维度上都大于3000像素,imagecreatefromjpeg将会翻倒。
答案 1 :(得分:2)
阻止imagecreatefromjpeg停止脚本,你应该检查设置的内存限制。您可以按如下方式确定所需的内存: 需要内存=图像像素* 3字节
e.g。如果您的图像的分辨率为1000 x 2000
,那么所需的内存将为
memory required= ((1000 * 2000) * 3)=600000 bytes =5.72205MB
如果设置的内存限制为5242880字节(5MB),则可以在调用imagecreatefromjpeg()之前执行以下检查
if($memory_required < 5242880)
{
imagecreatefromjpeg();
// continue with your image related operations
}
else
{
//handle error message, perhaps show such message as "provide image is too big"
}
您可以使用PHP中的PHP可用函数来确定图像分辨率(高度,宽度)
答案 2 :(得分:0)
见这个帖子:
A fail-safe way to prevent GD image library from running out of memory? (PHP)
简单的答案是任何程度的确定性都不容易实现
答案 3 :(得分:0)
在函数执行任何帮助之前添加@?
示例:
$x=@imagecreatefromjpeg .......
另请参阅如何抑制php中的错误:http://us3.php.net/manual/en/language.operators.errorcontrol.php
答案 4 :(得分:0)
只需将您的函数包含在if语句中,指示它在函数失败时重定向。
即。 if(!imagecreatefromjpeg){//在此重定向命令};