Forum Webscript.Ru
Программирование => PHP => Тема начата: pahal от 17 Декабря 2007, 15:42:52
-
Привет всем знатокам!
Столкнулся c одной интересной проблемкой…
Если пользователь закачивает на сервак большую картинку, например 2,2 Mb, не получается сделать превьюшку и даже не получается изменить её размер.
Функции imagecreatefromstring(), imagecreatetruecolor(),imagecreatefromjpeg() и подобные работают только согласно отпущенного лимита памяти для PHP, а большие картинки этот лимит значительно превышают.
Хотел автоматически уменьшать картинку, но для всех функций одна и та же проблема.
Может кто сталкивался с такой ситуацией, может есть ещё какие способы уменьшить картинку?
Заранее благодарен!
-
У меня такая же проблема!!! даже не знаю что и делать, все уже перепробовал не выходит никак, кто подскажет?
-
Вообще говоря, решить-то её можно, просто по другому нужно подходить к вопросу...
Если поставить на серваке затычки, чтобы пользователь не мог закачивать картинки больше допустимого размера, но я хотел избавить этого самого пользователя от этих проверок, а автоматом уменьшать загружаемую картинку...
Но сделать это не получается...
-
pahal Frion
Господа,
вы сначала разберитесь, где у вас проблема.
Если проблема закачать - так это max_upload_size, переменная окружения.
Если проблема заресайзить - то внимательно читаем комменты в мануале, там и описание всех возможных граблей, и вывода ошибок. С примерами.
http://ru2.php.net/manual/ru/function.imagecreatefromjpeg.php
-
Проблема именно в том, что функции обработки графики не хотят работать с большими картинками и не получается уменьшить её размер, даже если изменить лимит памяти...
Попробовал на серверах провайдеров, лимит меняется, а большая картинка не обрабатывается.
-
А лимит точно меняется?
ini_set(\'memory_limit\', \'50M\');
print ini_get(\'memory_limit\');
При включенном safe-mode значение memory_limit остается прежним.
-
Да, print выводит то значение, которое задано, например
ini_set(\'memory_limit\', \'1200M\');
выводит 1200М
-
Тогда могу лишь дать общие рекомендации, которые возможно помогут найти причину:
1. Протестировать на локальной машине. Всё должно работать.
2. Включить error_reporting(E_ALL) и display_errors = On. Когда у нас картинка не влезает в память, мы должны увидеть сообщение "Fatal error: Allowed memory size ... bytes exhausted". Ставим ограничение на размер файла, если расширить память не удается.
3. Источник фотки. Нередко производители цифровых фотоаппаратов меняют порядок байт в файле изображения, и тогда программы не могут прочитать такой файл.
-
Всё так и есть...
На локальной машине всё протестировано и в полном поряде.
Сообщение типа Fatal error: Allowed memory size имеется.
Просто хотелось не нагружать пользователя, чтобы картинка уменьшалась автоматом, без его участия, но, похоже, что добиться этого не удастся, к сожалению и придётся просто ставить затычки на размер загружаемого файла...