Imagecache: проблема с уменьшением картинок

Главные вкладки

Аватар пользователя Expier@drupal.org Expier@drupal.org 4 января 2010 в 20:01

Есть такая проблема: при добавлении на сайт картинки большого разрешения (именно разрешения, а не размера - размер ограничен 200кб) происходит следующее: картинка закачивается на сервер, но ресайзные картинки не создаются (для каждой картинки есть два пресета: 1 - генерация тамбнейла 100х100, 2 - ресайз для отображения в ноде, чтоб не рвала лизайн). При этом никаких ошибок ни в логах сервер, ни в watchdog нету.
Подскажите пожалуйста - может кто-то сталкивался, в чем дело? А, да - на локльной машине все ок с этими же картинками:)

Комментарии

Аватар пользователя v1adimir v1adimir 4 января 2010 в 23:46

для imagecache используется gd или imagemagick? если последнее, то проверь, правильно ли указан к нему путь на сервере.

Аватар пользователя v1adimir v1adimir 5 января 2010 в 11:42

<a href="mailto:Expier@drupal.org">Expier@drupal.org</a> wrote:
...при добавлении на сайт картинки большого разрешения (именно разрешения, а не размера...

можно попытаться хотя бы вычленить проблему. попробуй добавлять на сайт эти же картинки, но предварительно уменьшенные по разрешению. или в другом формате. или с измененной цветовой палитре, типа, INDEX -> RGB, grayscale -> RGB...

Аватар пользователя Expier@drupal.org Expier@drupal.org 6 января 2010 в 21:40

Проблема в том, что это пользователи добавляют картинки. Я конечно уменьшил разрешение тех, что не заресайзились и перезалил, но это же не выход... Интересно, с чем это может быть связано.

Аватар пользователя antton antton 7 мая 2010 в 16:43

Была та же проблема. И в логах, тоже, ошибок не наблюдал. Писал в тех.поддержку хостинга, спрашивая стоит ли ограничение на разрешение обрабатываемых изображений графической библиотекой GD2. Получил ответ, что таких ограничений нет, а есть только ограничение по оперативной памяти. А как раз на обработку больших по разрешению изображений и требуются большие ресурсы. Причём, как сам замечал, в основном на нехватку ресурсов влияет именно разрешение (площадь) картинки, а не её размер.

Решений в этом случае три:
1) Оплачивать более дорогой хостинг, с большим количеством оперативной памяти. Возможно, вы сами можете изменить настройки количества выделяемой вам оперативной памяти вашим хостером (через файл .htaccess или через php.ini). Смотрите инструкции у вашего хостера.
Как рекомендует подсказка в самом Imagecache: для обработки изображения 1600x1200 - необходимо 45M оперативной памяти, а учитывая что модуль в своей памяти может держать одновременно два и больше изображений - то минимально необходимое количество оперативной памяти составляет 96M.
2) Ограничить разрешение загружаемых картинок в настройках модулей, так чтобы такие картинки вообще не загружались на сайт, а пользователю выдавалось сообщение об ошибке. В одном из модулей, как раз видел такие настройки.
3) Если количество загружаемых пользователями картинок невелико и сайт маленький. Можно оставить всё как есть. Вручную чуть подправив код модулей, чтобы вместо обработки больших картинок выводилась спец. картинка - "Изображение в обработке...". А потом, вручную скачивать эти картинки к себе на локальную машину и обрабатывать у себя, закачивая вручную на сайт.

--
Удачи!

Аватар пользователя Serge66 Serge66 7 мая 2010 в 16:32

"antton" wrote:
Решений в этом случае три:

4. Уменьшить иаксимальное разрешение картинки. При загрузке картинки с большим разрешением Imagecache сам изменит размеры.

Аватар пользователя antton antton 7 мая 2010 в 16:40

Serge66, если картинка очень большая по разрешению (по площади), а оперативной памяти мало - ничего не произойдёт, картинка просто не будет обработана Imagecache, т.к. не хватит выделенных ресурсов. Об этом и пишет Expier, описывая свою проблему.

Аватар пользователя Serge66 Serge66 7 мая 2010 в 16:53

Только что проверил на тестовом сайте.
Бесплатный хостинг. Памяти 64 Кб. Файл более 2 Мб. GD2.
Сообщение сайта.

« * The original image was resized to fit within the maximum allowed resolution of 1024 x 768 pixels.
* Изображение ьтитбьб был создан.
»

Аватар пользователя antton antton 7 мая 2010 в 17:31

"Serge66" wrote:
Памяти 64 Кб

Наверное всё же, 64 Мб Smile

"Serge66" wrote:
Файл более 2 Мб

Я об этом и сказал. Файл может быть размером и 4 Мб. Но нагрузку на библиотеку GD2 даёт не столько размер файла, сколько площадь (разрешение) изображения.
С моим хостингом при тестировании 32 Мб - хватало на обработку !одного изображения площадью 2150x2150. Изображения большЕго разрешения не обрабатывались. При этом значение имела, именно вычисляемая площадь. Ширина и высота изображения могли варьироваться (3080x1500), главное чтобы вычисляемая площадь получалась не больше... А если количество одновременно обрабатываемых изображений увеличивается, то увеличивается и нагрузка от них Smile
Serge66, получается, что на вашем хостинге не будет обрабатываться одно изображение площадью большей чем ~ 4300x4300 (ну а для стабильности эксперимента лучше взять цветное изображение площадью 5000x5000).

Аватар пользователя Serge66 Serge66 7 мая 2010 в 18:14

"antton" wrote:
Наверное всё же, 64 Мб :-)
Да, описка.

Как я понял, у ТС рабочий сайт. А для Друпала хостинг с памятью менее 128 - деньги на ветер. На собственном опыте убедился. Поэтому и привел свой пример.