Генерация изображений (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) от начала координат