Генерация изображений (Picture)
Описание
Данный сервис позволяет генерировать изображения для абонентов, на основе данных об абонентах на SSW и выбранных шаблонах.
Конфигурация сервиса
Настройка сервиса
Данные используемые при создании картинки берутся из базы MySQL. Для того, чтобы сервис работал, необходимо настроить для пакета ecss-restfs сервис "Удаленная адресная книга (Address-book)", с доступом через mysql.
Проверка сервиса
Для проверки работоспособности сервиса необходимо обратиться к его api:
- <IP> — ip-адреса сервера, где установлен пакет ecss-restfs;
- <domain> — домен для пользователей которого запрашиваются номера;
- <digits> — номер существующего на SSW абонента.
$ curl 'http://<IP>:9990?host=picture&digits=<digits>&domain=<domain>' --output test.png -v
< HTTP/1.1 200 OK
< Server: nginx/1.14.0 (ECSS10)
< Date: Thu, 20 Feb 2020 09:51:07 GMT
< Content-Type: image/png
< Content-Length: 33540
< Connection: keep-alive
< X-Info-FileSize: 32 kB
< X-Info-FilePermissions: rw-r--r--
< X-Info-FileType: PNG
< X-Info-FileTypeExtension: png
< X-Info-BitDepth: 8
< X-Info-ColorType: RGB with Alpha
< X-Info-Compression: Deflate/Inflate
< X-Info-Filter: Adaptive
< X-Info-Interlace: Noninterlaced
< X-Info-PixelsPerUnitY: 3937
< X-Info-Megapixels: 0.947
< X-Cache-Status: HIT
< Backend: picture
Если сервис работает корректно, то в файл test.png должно записаться изображение согласно дефолтному шаблону.
Дополнительная настройка сервиса
Шаблоны
Сервис Picture поддерживает пользовательские шаблоны изображений. В них можно самостоятельно составить необходимое изображение на основе доступный переменных. Пользовательские шаблоны находятся по пути /etc/ecss/ecss-restfs/template/picture.
Каждый шаблон должен соответствовать следующему виду: -<tempate_name>.html
- <tempate_name> — имя шаблона.
Кроме того для шаблонов может быть использован набор стилей CSS и добавлена логика JS. Для управления переменными и модульными составляющими шаблона используется шаблонизатор jinja2.
Доступные переменные:
- {{template_path}}/user — путь до директории с пользовательскими шаблонами;
- phones — список контактов. Содержит список словарей:
- contact-name;
- first-name;
- middle-name;
- last-name;
- company;
- position;
- desc;
- photo;
- phones — список телефонов контакта. Кортеж:
- digits;
- label;
- description;
- emails — список почтовых адресов. Кортеж:
- email;
- description;
- details — словарь:
- location — словарь местоположения:
- town — Город;
- country — страна;
- location — адрес вызова, если возможно определить( например, ул. Ленина, д. 7);
- summary — словарь доп инфы:
- lang — язык (ru, en, kz,...);
- tzone — временная зона;
- birthday — день рождения (DD, MM, YYYY);
- experience — дата трудоустройства (DD, MM, YYYY);
- gender — пол (male, female);
- location — словарь местоположения:
- template_path — путь до корня picture;
- url — url по которому было обращение;
- query — словарь аргументов. str -> list(str);
- headers — словарь заголовков. str -> str;
Пример шаблона по умолчанию можно посмотреть по пути /usr/lib/ecss/ecss-restfs/template/picture/base.html.
Использование сервиса
API сервиса
Запрос изображения для абонента
http://<IP>:9990?host=picture&digits=<digits>&domain=<domain>&<Параметр_1>&<Параметр_2>' -v
- <IP> — ip-адреса сервера, где установлен пакет ecss-restfs;
- <Параметр> — дополнительные параметры запроса, порядок не имеет значения;
- <domain> — домен для пользователей которого запрашиваются номера;
- <digits> — номер существующего на SSW абонента.
Параметры
- domain — имя домена для абонентов которого создается изображение;
- device-width — ширина экрана устройства в пикселях (320)
- device-height — высота устройства в пикселях (240)
Дополнительные параметры
- resize <geom> — пропорция картинки: <ширина>x<высота>;
- resample <geom> — растянуть;
- chop <geom> — обрезать картинку. Применима с gravity;
- swirl <deg> — искажение в центре по спирали;
- rotate <deg> — повернуть картику на некоторое кол-во градусов;
- blur <radius>x<sigma> — блюр;
- extent <geom> — вырезать подкартинку. Применима с gravity;
- gamma <val> — гамма;
- ext <ext> — требуемое расширение:
- jpeg, png, bmp
- brightness-contrast <brightness{xcontrast}{%}> — якрость и контрастность;
- depth <val> — глубина.
Boolean
Опция должна передаваться с аргументом true
- monochrome — черно-белое изображение;
- negate — негатив;
- flip — перевенуть картинку по вертикали;
- flop — перевернуть картинку по горизонтали;
- transpose — flip, rotate=90;
- transverse — flop, rotate=90.
Другое
- gravity <location> — Устанавливает начало координат;
- NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast;
- region <geom> — область к которой применяется действие(Без указание преобразование применяется ко всей картинке).
<geom> используется для указания размер/пропорций/смещения:
- <Weigth>x<Heigth> — ширина и высота
- <N>% — процентное соотношение
- <W>x<H>(+|-)<X>(+|-)<Y> — ширина и высота со смещением (x,y) от начала координат