从停止脚本中阻止imagecreatefromjpeg

问题描述:

我在共享主机上使用imagecreatefromjpeg,因此如果图像太大,imagecreatefromjpeg会给我一个“超出内存错误”并终止脚本。从停止脚本中阻止imagecreatefromjpeg

是否有办法赶出内存错误,并简单地让imagecreatefromjpeg失败(返回false)而不是终止脚本?

试着弄出图像的大小第一:http://uk3.php.net/function.getimagesize我相信imagecreatefromjpeg会跌倒如果图像大于3000px在任何维度。

+0

+1检查尺寸第一始终是一个很好的预防措施 – bobince 2009-09-07 21:51:36

+0

他也可以查看文件的大小本身。 – dusoft 2009-09-07 22:50:36

看到这个线程:

A fail-safe way to prevent GD image library from running out of memory? (PHP)

答案很简单,它不容易有把握的任何程度

并添加@函数之前做任何帮助吗?

例如:

[email protected] ....... 

又见如何抑制错误在PHP中:http://us3.php.net/manual/en/language.operators.errorcontrol.php

+0

删除错误消息,但PHP脚本stil死亡。 – 2009-09-07 17:02:05

简单的if语句里面附上功能,指示它当函数失败重定向。

即if(!imagecreatefromjpeg){//在此处重定向命令};

从停止脚本阻止imagecreatefromjpeg,你应该检查设置的内存限制。您可以按如下方式确定所需的内存: 需要的内存=图像像素* 3个字节

例如如果您有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中确定图像分辨率(高度,宽度)