Задать вопрос

PHP GD: проблема с большими картинками?

Приветствую, знатоки PHP.

Возникла у меня проблема, не могу обойтись без вашей помощи.


Проблема такова:

При загрузке картинки на сервер создаются тумбы (превьюшки), а оригинал уменьшается до определенного размера по ширине. Проблема возникает, когда я добавляю фотографии большого разрешения (8 Мпикс). Проблемы в весе файла нет, именно в разрешении.

Вот кусок кода:
H9yh.png

А вот сама ошибка:
uMc6.png


Подскажите, пожалуйста, как мне справиться с данной проблемой? Возможно, нужно что-то дописать? Или может подскажете, например, какой-нибудь флешовый загрузчик, который уменьшает картинку на стороне клиента перед загрузкой? Клиент перед закачкой уменьшать картинки отказывается категорически и я его понимаю.
  • Вопрос задан
  • 3945 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
iSage
@iSage
>Invalid image dimensions
Ну так посмотрите, чему у вас $dst_w и $dst_h равны в этом случае. Вы же не привели код их расчета.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Кстати как вариант — создавать превьюшик с помощью ImageMagic. Обычно выходит быстрее и качественнее.
Ответ написан
smarteq
@smarteq
Web developer, System administrator
+ко второму камменту, причем не просто создавать их Image Magick`ом, а его КОНСОЛЬНОЙ версией примерно по такой схеме:

— Получаем файл в темп
— Делаем необходимые переименования, проверки и т.д.
— Складываем оригинал туда где он будет лежать
— запускаем через exec() /usr/bun/convert…;

Собственно в чем прикол… и почему это лучше делать так. Я однажды имел дело с плагином uploadify для jquery, который позволяет делать мультизагрузку фотографий. Сначала использовал GD, но на фотографиях больше 2-х метров этот плагин начинал сходить с ума из-за того что php gd очень тормозил на таких фотографиях (а разрабатывалось и тестилось ПРИНЦИПИАЛЬНО на милимальной VDSке, чтобы если там заработает, то на нормальной как минимум на 10 одновременных пользователях не ляжет, из этих соображений). Иными словами, плагин сходил с ума из-за того что долго не получал ответов от сервера, который был в это время занят обработкой фоток. В случае с exec() php по барабану сколько времени оно будет выполняться, он запустил команду и не ждет ответа, а занимается дальше своими делами.

И еще камень в сторону GD. Есть такое слово exif. Не один десяток кирпичей из меня вылезло по этому поводу. Столкнетесь — поймете) у IM этой проблемы нет )

Удачи!
Ответ написан
Комментировать
@MrCrock
А вы уверены, что процессу хватает памяти для обработки изображений с таким разрешением?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы