2012-02-28 1 views
1

У меня есть некоторые проблемы с функцией imagecreatefrompng(), в PHP.imagecreatefrompng() и ограничение по размеру

Я разработал веб-сайт, целью которого является позволить пользователям загружать свои собственные комиксы Sprite (виды комиксов, созданные с помощью ресурсов, извлеченных из видеоигр, называемых спрайтами).

Я хочу показать в своих галереях некоторые миниатюры своих комиксов, поэтому я использую GD и, конечно, imagecreatefrompng().

Но бросить фатальную ошибку с большими изображениями:

фатальная ошибка: из памяти (выделено 8388608) (попытался выделить 4545600 байт)

То же самое происходит ошибка даже после установки значения «memory_limit» через ini_set() ...

После нескольких часов исследования s, похоже, из-за разрешения: imagecreatefrompng() не может управлять изображениями, имеющими более 1 040 000 пикселей ...!

Это очень и очень неудобно, так как я не могу ограничить размер комиксов, отправленных пользователями ...

Знаете ли вы какие-либо советы, чтобы решить эту проблему?

Thnaks заранее!

+0

Рассмотрите возможность использования Flash в качестве метода обработки изображений, чтобы убрать часть загрузки сервера, и у вас не будет этих ограничений. Просто идея, никогда не делала этого и не знала, действительно ли это возможно. –

+0

Мне не нравится идея использования Flash, но если мне нужно ... Спасибо за ваш ответ :) – KorHosik

ответ

2

Вам нужно попросить вашего хостинг-провайдера установить больше виртуальной памяти. Это настройка в php.ini - memory_limit и не должна быть проблемой, чтобы сделать это бесплатно. Теперь вы находитесь на самом низком уровне.

+0

Кажется, не из-за «memory_limit»: мое значение по умолчанию - 90 Мб, поэтому я думаю, что этого достаточно:/Но спасибо за ваш ответ! – KorHosik

+0

Я думаю, что я прав. Должен знать, каждый пиксель находится в памяти, умноженной на глубину бита изображения. 1 000 000 пикселей означает aprox. 1024 x 768 px. Глубина 16 бит должна выделять минимум 16 Мб памяти для базовой нагрузки. При изменении размера или других манипуляциях используется копия того же размера. Реальная необходимая память для работы с изображениями намного выше, чем кажется. По-прежнему используется koeficent 1,5 - 2 для умножения результата подсчета бит. –

 Смежные вопросы

  • Нет связанных вопросов^_^