2009-09-07 2 views
3

Я использую imagecreatefromjpeg на общем хосте, поэтому, если изображение будет большим, то imagecreatefromjpeg даст мне «ошибку из memmory» и завершает скрипт.Предотвратить imagecreatefromjpeg от остановки сценария

Есть ли способ избежать ошибки memmory и просто позволить imagecreatefromjpeg fail (вернуть false) вместо завершения сценария?

ответ

3

Попробуйте сначала определить размер изображения: http://uk3.php.net/function.getimagesize Я верю, что imagecreatefromjpeg упадет, если изображение больше 3000 пикселей в любом измерении.

+0

+1 проверки размеров первой всегда хорошая предосторожность – bobince

+0

он также может проверить сам размер файла. – dusoft

0

Просто заключите функцию внутри, если заявления, поручив его переориентировать, когда функция не выполняется.

i.e. if (! Imagecreatefromjpeg) {// перенаправлять команды здесь};

2

Предотвратите функцию 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, чтобы определить разрешение изображения (высота, ширина)

Смежные вопросы