WSGI middleware for image resizing
Project description
Назначение
Пакет 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__
CHANGES
Version 0.3.1
Исправлено масштабирование методом ‘crop’ маленьких картинок до больших размеров.
Version 0.3
Изменён способ передачи параметров в миделвару
Переименованы методы масштабирования:
'scale_fit' => 'fit_stretch' 'scale_stretch' => 'stretch'
Добавлены новые методы масштабирования ‘squash’ и ‘fit_squash’
Version 0.2
Добавлен параметр crop
Добавлены параметры scale_fit и scale_stretch
Добавлен параметр для указания качества сжатия JPEG или указывающий на сохранение в PNG
Добавлено простейшее WSGI приложение возвращающее файлы из указанной директории и обёрнутое middleware для обработки изображений.
Buildout теперь устанавливает wsgi-сервер uWSGI и создаёт wsgi-script для запуска приложения
Добавлен пример конфигурации приложения для Paste и uWSGI
Version 0.1
Initial Release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file cykooz.thumbs-0.3.1.tar.gz
.
File metadata
- Download URL: cykooz.thumbs-0.3.1.tar.gz
- Upload date:
- Size: 46.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d4abb60ce14d1e3e2d9d50f085851517bf9ba46c4a8f53dc14953495e3d9473 |
|
MD5 | 92b2d6c6dcacd60707d48b510a7f0045 |
|
BLAKE2b-256 | 2668c86b91966fac84efed8abead56fa46703f8120f28f1928fc7147f6002e56 |