Отношение комментариев, которые включают профанацию в комментарии, которые не делают.
Выше = лучше кодируют.
Купите больше памяти! :-P
Если серьезно, то невозможно справиться с нехваткой памяти, потому что любое ваше действие потребует больше памяти.
Лучше всего ограничить размер загружаемого изображения на основе текущих настроек памяти.
Лучше всего перестать пытаться вычислить, сколько оперативной памяти ему потребуется, и просто довести его до максимума с самого начала - если у вас есть 4 ГБ, скажите сценарию изображения использовать между 2 и 4 ГБ или около того, и когда скрипт завершится, верните его в нормальное состояние, что покроет все потенциально фатальные ситуации. Это единственный "отказоустойчивый" способ, который я могу придумать ...
Есть другой способ сделать это, но он может занять много времени, так как определенные части процесса редактирования изображения будут повторяться несколько раз, но вы можете установить лимит памяти на свой оценочное значение, затем попробуйте обработать изображение, если оно не удастся поймать исключение, увеличьте лимит памяти, затем снова обработайте изображение - повторяя это, пока не добьетесь успеха или не достигнете определенного лимита памяти - в этот момент вы выдадите сообщение об ошибке пользователю, объяснив, что его изображение слишком велико для использования.
Изменить: чтобы поймать ошибку нехватки памяти, вы можете использовать следующее решение: http://au2.php.net/set_error_handler# 35622
Чтобы отловить фатальные ошибки PHP, такие как «Недостаточно памяти» или «Неустранимая ошибка PHP: разрешенный размер памяти 8388608 байт исчерпан (попытался выделить… байтов) в», см. Здесь: http://php.net/manual/en/function.set-error-handler.php#88401