Защо мога да завъртам малки снимки, но не и големи снимки с помощта на функцията imagerotate() на PHP?

Написах PHP скрипт, който ми позволява да завъртя изображение, като използвам функцията imagerotate() на PHP. Работи чудесно с повечето снимки, които съм тествал. Въпреки това, скриптът се срива при опит за завъртане на по-големи снимки (> 644 KB, 2112px x 2816px). Това не е много голяма снимка, но моят скрипт се срива само когато снимката е около този размер или по-голям. Има ли ограничение за размера на файла при използване на 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 MB и все още имам същия проблем.   -  person Ajay Mohite    schedule 19.07.2012
comment
Как се срива? какви грешки получаваш?   -  person    schedule 19.07.2012
comment
В такъв случай погледнете в регистрационните файлове на вашия уеб сървър.   -  person sberry    schedule 19.07.2012
comment
Наивното хранилище за това изображение ще изисква 22 мегабайта. Вероятно ще ви трябва два пъти повече (за вход и изход), плюс каквито и да е допълнителни разходи, необходими за четене и запис на компресирани изображения, плюс каквато и да е работа, предприета за действителното завъртане, в допълнение към обичайните допълнителни разходи за стартиране на PHP интерпретатора на първо място. Опитайте 256M. Или погледнете паметта, използвана за малко по-малките изображения, които все още работят...   -  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 KB. Имам чувството, че трябва да се случи нещо друго. Увеличих паметта на 512 MB и пак не върти изображението.   -  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