Главная Библиотека CMS Plone Авто-оптимизация изображений в Plone

Авто-оптимизация изображений в Plone

В статье "Auto-optimizing images in Plone" автор делится своими идями о том, как можно улучшить работу с изображениями в Plone. Автор: Jon Stahl

Я провел небольшой "мозговой штурм" над тем, как улучшить работу Plone, чтобы помочь редакторам web-сайта - не техническим специалистам - управлять и оптимизировать свои изображения для web, и мне пришла, на мой взгляд, очень неплохая идея. У меня нет ни времени, ни навыков, чтобы воплотить ее, и поэтому я подумал спустить ее на воду, чтобы посмотреть
A) не протечет ли она;
B) смогу ли я заинтересовать кого-нибудь воплотить ее ;-)

Проблема: большие изображения

Много людей, которые редактируют Plone-сайты, действительно не понимают, как правильно оптимизировать изображения для web с помощью изменения размера и сжатия. Plone не является здесь совершенно бесполезным; когда Вы загружаете изображение, автоматически создаются несколько версий различного размера для их использования на ваших страницах. Однако, Plone в настоящее время не делает ничего, чтобы помочь Вам быть уверенным, что оригинал загружаемого изображения является соответствующего размера и сжатия.

А если соединить пользовательскую неопытность с большими размерами изображений, которые выдают современные цифровые камеры (6/8/10/12 мегапиксельные!), то в результате часто возникает ситуация, когда пользователи, загружающие большие цифровые фотографии с камеры на свои Plone-сайты, используют PIL-ресайз на странице. Хотя это работает, но быстро раздувает ZODB. Кроме того, автоматический PIL-ресайз не применяет большого сжатия, поэтому измененные изображения очень хорошо оптимизированы. Это замедляет работу сайта и является причиной ненужной загрузки сервера.

Но существует множество надстроек для продуктов, которые могут помочь в этом вопросе различными способами, среди них:

  • Plone.app.blob и Filesystem storage, которые выдвигают большие бинарные объекты, такие как изображения, в файловую систему, сокращая раздувание ZODB.
  • ImageEditor, удивительная программа редактирования изображений, похожая на Photoshop, которая работает внутри Plone. С её помощью можно изменять размер и сжатие, но одновременно можно работать только с одним изображением. Однако, это хорошее решение для конечного пользователя.

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

Вот некоторые возможные умные решения и, как я думаю, мы можем добиться большего успеха:

Во-первых, изменения в Plone по умолчанию:

  • Сжатие, настраиваемое из панели управления Plone. Сейчас это жёстко зашито в ATContentTypes, и его трудно настроить без внедрения Ваших собственных типов контента.
  • Автоматически изменять размер всех "оригинальных" загружаемых изображений до 1024px. Предоставлять пользователю возможность настраивать это, включать и выключать, за исключением тех редких случаев, когда Вам действительно необходимо загрузить оригинал изображения с очень высоким разрешением.

Можно даже сделать более смелое заявление, я думаю найдется кто-то, кто сможет написать умную надстройку для администраторов сайтов, которая делала бы следующее:

  1. Просматривала бы каталог сайта, в поиске всех объектов, которые являются Image-ish  и JPEG.
  2. Просматривала бы размер в пикселях и байтах каждого изображения.
  3. Искала бы изображения, где количество “байт на пиксель” (filesize/*(height*width)) выше чем некоторая "разумная" величина (0.5 байт на пиксель мне кажется весьма разумным отношением, и соответственно изображение 150X150 пикселей в формате JPEG не должен весить больше 10 КБ. (Понятно, что настройки этих параметров должны быть доступны пользователю.)
  4. Предоставляла бы пользователю список “подозрительно больших” изображений, а также их размер в пикселях, байтах, байтах на пиксель и их предварительный просмотр.
  5. При использовании изображений JPEG,  применяла бы  дополнительное сжатие для некоторых или всех изображений. (При этом пользователь мог бы сам настроить эти значения, возможно предоставляла бы возможность проверить это на 2-3 изображениях, и оценить сохраненный результат.)
  6. Для изображений, которые имеют больший размер в пикселях чем тот, который вы хотите отображать в web-браузере, предлагала бы изменять размер оригинального изображения до размера, указанного пользователем (мне кажется размер 1024 пиксела вполне бы подошел по умолчанию).
  7. Применяла бы сжатие через PIL, возможно как фоновый процесс, чтобы Zope не тормозил. Затем автоматически изменила бы размер изображений Plone из этого нового оригинала. При необходимости очистила бы Кеш.

Итак, как вы думаете? Разумно ли это? Получили ли бы вы пользу от этих изменений? Может быть есть что-нибудь еще, что я упустил из виду? Заинтересованность в помощи раскрутит ли первые две идеи в PLIPs для Plone 4?  Или надо создать массовый оптимизатор для изображений? Я хотел бы услышать ваше мнение. 

Оригинал статьи на http://blogs.onenw.org

Перевод ООО «Комтет» komtet.ru