Source

cykooz.thumbs /

Filename Size Date modified Message
etc
src/cykooz
194 B
137 B
1.4 KB
181 B
4.7 KB
9.8 KB
301 B
554 B
1.4 KB
713 B

Назначение

Пакет cykooz.thumbs реализует WSGI-middlware для изменения размера картинок отдаваемых приложением.

Конструктор миделвары

cykooz.thumbs.middleware.Thumbs(application, cache_dir, sizes, **kwargs)

Аргументы:

application
приложение оборачиваемое миделварой
cache_dir
путь к папке в которой будет храниться кэш картинок
sizes
словарь с параметрами допустимых размеров картинок

Пример значения для аргумента sizes:

{
    'small': {'size': (100, 100), 'scale_method': 'crop', 'quality': 80},
    'preview': {'size': (800, 600)},
    'png_thumb': {'size': (50, 50), 'scale_method': 'crop', 'quality': 'png'}
}

где:

size
размер, в который надо вписать картинку. Если один из размеров равен нулю, то этот размер берётся из исходной картинки.
scale_method

режим масштабирования (по умолчанию - 'fit_stretch'):

'сrop'
обрезание картинки до заданных пропорций и вписывание в указанный размер;
'stretch'
растягивание картинки до заданных размеров;
'squash'
то же самое, что и 'stretch', но возвращает оригинальную картинку если оба её размера меньше требуемых;
'fit_stretch'
вписывает картинку в заданные размеры с сохранением оригинальных пропорций;
'fit_squash'
то же самое, что и 'fit_stretch', но возвращает оригинальную картинку если оба её размера меньше требуемых.
quality
качество сжатия JPEG, если указанно 'png', то картинка будет сжата в PNG. По умолчанию - 75

Пример конфигурации миделвары для Paste

[filter:thumbs]
use = egg:cykooz.thumbs
cache_dir = %(here)s/images_cache
sizes =
    small = 100x100,crop,q80
    preview = 800x600
    png_thumb = 50x50,crop,qpng

WSGI приложение

Пакет содержит простейшее приложение обёрнутое миделварой. Это приложение просто возвращает файлы из указанной аргументом image_dir папки.

Пример конфигурации приложения для Paste

[app:main]
use = egg:cykooz.thumbs
image_dir = %(here)s/images
cache_dir = %(here)s/images_cache
sizes =
    small = 100x100,crop,q80
    preview = 800x600
    png_thumb = 50x50,crop,qpng

Запуск приложения

К проекту прилагается конфигурация Buildout для запуска приложения и пример конфигурации для PasteDeploy. Конфигурация Buildout:

  • создаёт скрипт ./bin/paster
  • компилирует WSGI-сервер uWSGI
  • создаёт скрипт ./bin/wsgi-script для запуска приложения чрез mod_wsgi или через uWSGI

Пример команды для запуска приложения под uWSGI:

user@user-pc:~/cykooz.thumbs$ ./bin/uwsgi --ini ./etc/thumbs_example.ini

Получение отмасштабированных картинок в браузере

Получить в браузере отмасштабированную картинку можно например так:

http://www.site.ru/images/big_images.jpg?view=small
http://www.site.ru/images/big_images.jpg?view=preview

Очитка кэша из браузера

Что бы очистить кэш картинок достаточно загрузить любой адрес, который перехватывается миделварой со специальным аргументом:

http://www.site.ru/images/big_images.jpg?view=__clear_cache__
или
http://www.site.ru/?view=__clear_cache__