2024-03-06     #article

Адаптивные векторные эмодзи в Telegram

По материалу статьи реализован Telegram бот SVGToTGSBot в соавторстве с Ksander .

Мы где-то добыли красивые иконки в SVG (открытый векторный формат) и хотим превратить их в премиум набор векторных адаптивных эмодзи, меняющих цвет в зависимости от темы приложения. Типа такого .

Бот

Для создания пака можно воспользоваться официальным ботом Stickers :

  1. /newemojipack
  2. Static emoji
  3. /adaptive

Загружать в него нужно файлы в формате TGS (Telegram Sticker). По этому формату известно очень мало и практически не встречаются рабочие конвертеры.

Lottie

На самом деле TGS - это формат Lottie на основе JSON

По Lottie известно немного больше, но практически всё приводит к официальному сайту с платной поштучной конвертацией; и плагинам на Adobe After Effects, Adobe Animate, Sketch, которыми можно экспортировать Lottie-файлы из соответствующих программ. Если способ устраивает, можно установить плагин на знакомую программу и пересохранять SVG в TGS по одному.

Если хотим больше и быстрее

Можно воспользоваться скриптом на Python.

Сначала нужно установить сам Python с официального сайта . Во время установки лучше выбрать Advanced, обязательно отметить "Add python.exe to PATH". Установку pip лучше тоже не пропустить.

Если выбрана обычная установка, то pip можно установить позже по статье .

Когда с Python и pip разобрались, нужно открыть терминал (Win + R, cmd) и установить пакет для работы с lottie:

                    pip install lottie 
                

Теперь доступен запуск скрипта для массовой конвертации SVG в TGS:

  1. Скачать файл tgs.py ;
  2. Разместить в удобном месте, например создать в домашней папке пользователя папку stickers. Получится C:/Users/MyUserName/stickers/tgs.py
  3. Создать там же папку svg, положить в неё свои svg-иконки;
  4. Открыть терминал, перейти через команду cd stickers в папку со скриптом;
  5. Запустить конвертацию через команду tgs.py;
  6. Должна создаться папка tgs с результатами конвертации.

Всё, теперь можно добавлять tgs-эмодзи через команду бота /addemoji, постепенно получить желаемый набор и красоваться.

Для повторной конвертации достаточно пунктов 4-6. Можно выписать себе в блокнот команду и запускать одной строкой:

                    cd stickers && tgs.py 
                

(или только tgs.py, если уже в нужной папке).

Обратный скрипт

svg.py для конвертации TGS в SVG. Всё то же самое, но файлы берутся из папки tgs и результат складывается в папку svg. Можно сохранить интересующий эмодзи или стикер на компьютер, конвертировать в SVG через команду svg.py, немного перерисовать и конвертировать обратно через tgs.py.

Невекторные

Если есть красивые иконки других форматов, с которых мы хотим сделать пусть не векторные, но адаптивные эмодзи, то процесс тот же самый, только в тексте скрипта tgs.py замените .svg на формат ваших изображений. Поддерживаются SVG, PNG, WebP, GIF, TIFF, BMP.