Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Графика > GD не работает прибольших разрешениях изображений |
Автор: Shar 25.3.2009, 14:52 |
Помогите! Использую библиотек GD2 для ресайза больших изображений, но почему то не поддаются обработке изображения с большим расзрешением > 2000px, даже небольшие по весу при этом. Может есть какие то ограничения или аналогичные функции для работы с изображениями? |
Автор: enof 25.3.2009, 14:58 |
Shar, Памяти хватает? включите вывод ошибок. |
Автор: MoLeX 25.3.2009, 15:28 | ||
и весь мусор сюда |
Автор: Shar 25.3.2009, 15:34 |
эта директива у моего чудо хостера отключена, как и файл .htaccess. Ошибках только в логах можно посмотреть Добавлено через 4 минуты и 13 секунд [Wed Mar 25 07:33:04 2009] [error] [client 93.81.50.37] PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 9996 bytes) in /home/newauto/public_html/resize2.php on line 132, referer: http://www.****ru/car.php?damping=run&type=car&location=foreign&mark=2900&model=3503&id=3503 Насколько я понимаю вот эта строка из лога и есть причина, как аз броблема с памятью. Какие будут возможные пути решения? |
Автор: Shar 25.3.2009, 15:44 |
Ну а все таки может какие то параметры изменить можно? |
Автор: enof 25.3.2009, 15:48 |
Shar, Это ограничение устанавливается в php.ini Если вам даже error_reporting и htaccess запретили, то наврятли изменят ограничение на используемую память. |
Автор: Shar 25.3.2009, 15:58 |
ну я попробую договориться, подскажите какой оптимальный размер памяти нужно установить? |
Автор: skyboy 25.3.2009, 16:04 |
дело в том, что jpeg - "запакованный" поток. напрямую его не обработаешь. максимум - скопировать область в другую картинку. потому надо предварительно его "распаковать". в jpeg размер "упакованных" данных зависит от самих данных - одни сжимаются плохо, другие – отлично. в случае с распакованными данными(предлполагаю, т.к. исходники GD не смотрел), размер данных в памяти зависит в первую очередь от разрешения. решения, кроме увеличения памяти, не вижу. |
Автор: enof 25.3.2009, 19:58 |
Высота*Ширина*5 Считайте сами, сколько вам понадобится памяти. Картинка 2000*2000 занимает около 20 метров. |
Автор: MoLeX 26.3.2009, 07:01 |
Shar, вывод: - беги от этого хостера |
Автор: Shar 26.3.2009, 09:48 | ||
делов том что картинки с таким разрешением занимают у меня часто менее 1мб, например с мобильника сделанные, но скрипт и их не может обработать |
Автор: skyboy 26.3.2009, 12:29 | ||||
или ты замеряешь, сколько твоя картинка занимает уже в памяти, а не на диске? |
Автор: enof 26.3.2009, 14:28 | ||||
Выше прочитайте. Без разницы, сколько у вас картинка занимает места на жестком диске. В памяти будет занято h*w*5. Проверить это можете так: http://www.huddletogether.com/projects/lightbox2/images/image-2.jpg 600 x 450 - 65k 600*450*5 = 1350000 = 1.3 мб.
|
Автор: solenko 26.3.2009, 16:31 |
Откула берется 5? Я всегда думал что для чпега h*w*глубину_цвета (или как это правильно называется?) Т.е. 256 цветов -- h*w*1 32 бита глубины -- h*w*4 |
Автор: enof 26.3.2009, 18:10 |
На основе тестов ![]() Посмотрел исходники, не все так просто, как я думал ![]() ![]() |
Автор: skyboy 26.3.2009, 18:40 |
поделись с более ленивыми ![]() |
Автор: enof 26.3.2009, 19:44 |
да я там совсем запутался что к чему( с с/с++ у меня все плохо). |
Автор: kruglov 10.9.2009, 08:39 |
Тоже есть такая проблема. Подскажите, в php.ini для увеличения объема памяти для обработки изображения нужно менять параметр memory_limit? |
Автор: IZ@TOP 10.9.2009, 09:47 |
kruglov, если вы знаете правильный ответ, зачем спрашиваете? Если есть идея - нужно проверить, а потом уже задавать вопросы. |
Автор: kruglov 10.9.2009, 23:53 |
IZ@TOP, я не знал, теперь проверил. Спасибо форуму за советы. |