Почему я могу вращать маленькие фотографии, но не большие фотографии, используя функцию PHP imagerotate()?

Я написал PHP-скрипт, который позволяет мне вращать изображение с помощью функции PHP imagerotate(). Он отлично работает с большинством фотографий, которые я тестировал. Однако скрипт аварийно завершает работу при попытке повернуть большие фотографии (> 644 КБ, 2112 x 2816 пикселей). Это не очень большое фото, но мой скрипт дает сбой только тогда, когда фото примерно такого размера или больше. Есть ли ограничение на размер файла при использовании imagerotate()?


person Ajay Mohite    schedule 18.07.2012    source источник
comment
Скорее всего ограничение памяти; проверьте ulimit -m вывод или php.ini предел конфигурации для максимально допустимой памяти.   -  person sarnold    schedule 19.07.2012
comment
Та же проблема существует в моей локальной среде тестирования MAMP и на моем рабочем сервере Linux. Я увеличил макс. памяти сценариев для PHP (на рабочем сервере) до 128 МБ, и у меня все еще та же проблема.   -  person Ajay Mohite    schedule 19.07.2012
comment
Как происходит крах? какие ошибки вы получаете?   -  person    schedule 19.07.2012
comment
В этом случае загляните в логи своего веб-сервера.   -  person sberry    schedule 19.07.2012
comment
Наивное хранилище для этого изображения потребует 22 мегабайта. Вам, вероятно, потребуется в два раза больше (для ввода и вывода), плюс любые накладные расходы, необходимые для чтения и записи сжатых изображений, плюс любая работа, выполняемая для фактического вращения, в дополнение к обычным накладным расходам. запуска интерпретатора PHP в первую очередь. Попробуйте 256М. Или взгляните на память, используемую для изображений немного меньшего размера, которые все еще работают...   -  person sarnold    schedule 19.07.2012
comment
Хорошо, спасибо за предложение. Я проверил свои журналы ошибок, и они сказали, что есть проблема с этой строкой в ​​моем скрипте: $rotate = imagerotate($source, 90, 0);. Ошибка Разрешенный размер памяти 33554432 байт исчерпан (пытался выделить 8448 байт).   -  person Ajay Mohite    schedule 19.07.2012
comment
опасно, но попробуйте: ini_set('memory_limit', '-1'); = вся память, которую вы получили.   -  person    schedule 19.07.2012
comment
Это просто не кажется правильным. Фото весит всего 644 Кб. Я чувствую, что должно происходить что-то еще. Я увеличил память до 512 МБ, и он все еще не поворачивает изображение.   -  person Ajay Mohite    schedule 19.07.2012
comment
ваш вопрос помечен как PHP, но не содержит кода PHP. Покажите свой код (только соответствующие биты, нам не нужны сотни строк!)   -  person Jocelyn    schedule 19.07.2012


Ответы (1)


Вы можете попробовать оболочку для GD, такую ​​как PHP Image Magician, чтобы упростить процесс.

person Jarrod    schedule 25.07.2012