Как сделать свою gif в Телеграмме

А теперь о подробностях реализации.

Всё началось с дискуссии в чатике Telegram-разработчиков о грядущей фиче:

Мужик сказал — мужик сделал! Первый прототип на Pillow и svgwrite, разбирающий GIF’ку на пиксели и преобразующий их в векторные квадратики с предпросмотром в SVG, был написан за один выходной.

Веселье началось дальше…

JSON — открытый формат, говорили они.

Доселе с форматами в Telegram то и дело хитрили. Сделали поддержку GIF-анимаций — на самом деле они конвертируются в MP4-видео. Сделали поддержку стикеров — выгружаются они в PNG, но преобразуются в WebP. В этот раз всё честнее: что на входе, то и на выходе.

Для анимированных стикеров в Telegram используется не GIF, не видео, и даже не какой-нибудь устоявшийся формат векторной графики типа SVG или — упаси Ктулху! — Flash. В нём задействован новомодный формат, вышедший из-под крыла Airbnb — Lottie. Доселе он имел некоторую известность в среде мобильных разработчиков, но благодаря Telegram, возможно, обретёт бо́льшую популярность.

Быстрый способ сделать гифку

По сути своей, файлы Lottie являются сериализованными в JSON проектами Adobe After Effects, по максимуму реализующими все возможности этой программы. С отображением, увы, всё не так радужно. Хотя готовых «официальных» реализаций библиотеки для рендеринга Lottie и много, как раз под покрываемые Telegram платформы: Android, iOS, Qt и Web — лишь часть из возможностей формата реализована во всех из них. В Telegram пошли ещё дальше и ограничили перечень поддерживаемых возможностей, а также «придумали» свой формат, который отличается от обычного Lottie всего лишь упаковкой в GZip и параметром «tgs»: 1 . Кажется, я знаю, где сейчас работает Денис Попов! 🙂

И если с документацией на библиотеки для разных платформ всё довольно неплохо, то найти хоть какое-то описание устройства формата, увы, не удалось — только JSON-схему в исходниках lottie-web. Пришлось попутно ковыряться в существующих анимациях, дабы понять общие концепции формата. Также обнаружились расхождения реальных файлов со схемой: в частности, в слоях типа 4, согласно схеме, вложенные объекты хранятся в свойстве «it» — однако в реальных файлах ключ называется «shapes» , а «it» не работает.

Выясненные нюансы формата:

  • Файл состоит из слоёв. В отличие от GIF, здесь у каждого слоя может быть произвольное время начала и конца отображения. К слою можно (точнее, нужно) применять различные трансформации: масштабирование, повороты, изменение прозрачности и т.д. Слои могут быть даже трёхмерными (запрещено для Telegram).
  • Слой состоит из «фигур» (shapes). Типов у них много, некоторе нельзя использовать в Telegram. На практике, чтобы слой отобразился, он должен включать три фигуры: контур (в готовых анимациях это обычно тип «sh» — кривые Безье; конвертер пока использует только тип «rc» — прямоугольники), заливка (тип «fl» ) и трансформация (тип «tr» ).
  • Можно даже включать растровые элементы, создавать текстовые слои, устанавливать взаимосвязи параметров слоёв и фигур через выражения. Вся эта вкуснотища также запрещена в Telegram.
Еще по теме:  Как выключить синхронизацию контактов в Телеграмм на Айфоне

Казалось бы, это и не проблема вовсе? Даже простенький GZip неплохо справляется со сжатием вопиюще повторяющихся данных, и 1 МБ сырого JSON магическим образом превращается в пару десятков килобайт, которые спокойно пролезают в заявленное ограничение в 64 кБ. Не тут-то было!

Загружаю я, значит, пухленькую анимацию, которая спокойно отображается lottie-web, в Telegram — и тут вместо условно красивого пиксель-арта на меня смотрит статическое размазанное вот это:

Что такое?! А оказалось, на разжатые данные тоже есть явно не указанное ограничение в 1 МБ. Представитель команды Telegram оперативно подтвердил его и сообщил о грядущем поднятии лимита до 2 МБ.

Даже если эти проблемы решат — стикеры, выходящие за пределы 1 МБ несжатых данных и не содержащие трансформаций, окажутся недоступными для пользователей старых версий Telegram. Так что придётся, видимо, соблюдать ограничения и впредь.

Прозрачность — это важно

Pillow, наряду с OpenCV, можно назвать индустриальным стандартом для обработки изображений в Python. Мало того, он неплохо заточен и под особенности GIF: поддерживает индексированные цвета, даёт доступ к палитре. Поддерживает преобразование пиксельной карты в NumPy-массив, что важно для продуктивной обработки. Даже статистику по цветам собирает! Но обнаружились и минусы:

  1. Не нашлось задокументированного способа получить индекс прозрачного цвета. Пришлось в качестве временного решения подразумевать, что прозрачный цвет — самый распространённый, но в реальных GIF’ках это не всегда так.
  2. То же самое с задержкой между кадрами: Pillow отдаёт только сами кадры как последовательность изображений, без информации о задержках.
  3. Иногда некорректно накладываются частичные кадры.

Прозрачность, как оказалось, gif2numpy не поддерживает вообще: цвета сразу преобразуются в три канала с разрядностью в байт, без учёта разрядности и сохранения индексов цветов. Благо, модуль состоит из одного файла, так что не составило труда включить его в проект и доработать, зарезервировав под прозрачность цвет #FE00FE .

Проблему с частичными кадрами решить оказалось нетривиально. gif2numpy пытается накладывать такие кадры на предыдущий, однако не проверяет параметры наложения, из-за чего также не всегда выходит правильный результат. Дабы не возиться с флагами, добавлена предварительная обработка изображений с помощью gifsicle с ключом —unoptimize — он преобразует частичные кадры в полные. А заодно приводит их к использованию глобальной палитры, что устранило необходимость отдельным образом обрабатывать прозрачный цвет при использовании собственной палитры кадра.

Сожми меня сильнее

Квадратики — это хорошо, но с такими ограничениями нужно проявить больше фантазии, иначе в Telegram не «пролезают» даже миниатюрные GIF’ки.

Первым в ход пошло нечто похоже на RLE : соседние по горизонтали квадратики одного цвета объединяются в один прямоугольник.

Далее — черёд эксплуатации особенностей Lottie. Поскольку каждый слой имеет произвольное время начала и конца — можно применить технику, которая давным-давно используется видеокодеками, и отчасти в самом GIF: квадратики, которые остаются на одном месте в течение нескольких кадров, можно слить в один слой, во время отображения которого сменяется несколько других. Что и реализовано, пока только для пар соседних слоёв.

Еще по теме:  Почему девушка удаляет переписку в Телеграмме

Планы по развитию

Идей, которые здесь можно применить, навалом:

  • Распознавать одноцветные области любого размера. Можно разбивать их на набор прямоугольников, для чего есть неплохой алгоритм. Также целесообразно преобразовывать их в контур, но это омрачается необходимостью указывать все точки кривых Безье в Lottie — прямоугольниками в некоторых случаях может быть выгоднее.
  • Распознавать движение. Техника, опять-таки, издревле применяющаяся в видеокодеках. Если один и тот же контур не меняет форму от кадра к кадру, но лишь координаты — стоит вместо дублирования на нескольких слоях поместить его на один слой с трансформацией.
  • Распознавать «накрытие» одних областей другими. Пример:

. .O..O. . .OOOO. .

Ссылки

  • Исходники. Местами страшные.
  • Канал, на котором я выкладываю паки успешно сконвертированных GIF’ок.

Источник: habr.com

Как отправлять, сохранять и создавать гифки в Телеграмм

*.gif – это формат файлов, которые представляют собой двигающиеся анимации. Гифки добавляют сообщениям яркости и красочности. Их можно использовать как альтернативу смайликам и стикерам. В мессенджере Телеграмм есть инструмент, который позволяет использовать такие файлы. Ниже мы расскажем, как именно в приложении отправлять и сохранять гифки.

Как отправлять гифки в Телеграмм

Gif-анимации доступны во всех существующих версиях приложения: и в мобильных, и в десктопной. Алгоритм действий в обоих случаях схож, однако есть некоторые различия.

Важно! В Telegram формат *.gif сжимается по размеру и преобразуется в *.mpeg4. Это применяется для того, чтобы увеличить скорость отправления сообщения и уменьшить объем затрачиваемого трафика.

На смартфоне

В мобильных приложениях с ОС iOS и Android отправить СМС с гифкой можно следующим образом:

  1. Запускаем мессенджер.
  2. Выбираем уже существующий диалог или создаем новый.
  3. В окне набора сообщения жмем на символ скрепки.
  4. Выбираем из галереи нужную гифку.
  5. Нажимаем на стрелочку для отправления файла.
  6. Дожидаемся конца загрузки.

Готово, гифка отправлена!

На компьютере

Похожие действия для отправки гифок нужно выполнить в версии ТГ для компьютера:

  1. Открываем программу.
  2. Переходим к диалогу.
  3. Нажимаем на скрепку в окне набор нового СМС.
  4. Выбираем из памяти устройства файл и отправляем его.

Готово! Ваша-гиф анимация отправлена собеседнику.

Видео

Как сохранять гифки из Телеграмма

В Telegram можно не только отправить гиф-анимации, но и сохранить полученные в сообщениях. Эта функция также присутствует во всех модификациях мессенджера.

На смартфоне

Для сохранения гиф-анимаций на смартфоне есть два способа:

  • Автоматическое сохранение;
  • Отправка в Избранное.

Автоматическое сохранение

В первом случае достаточно нажать на стрелочку начала загрузки, которая расположена по центру гифки. Она начнет проигрывание файла, а также скопирует его в память устройства.

Отправка в Избранное

Второй путь включает три действия:

  1. Нажать на три точки на гифки, чтобы открыть ее меню.
  2. Выбрать пункт «Переслать».
  3. Отправить сообщение в диалог Избранного.

В этом разделе хранятся файлы и сообщения, которые видите только вы. Сохраненную в нем гифку вы можете просмотреть в любой момент.

Еще по теме:  Запустить ботов по ссылке в ТГ

На ПК

В версии для компьютера действуем похожим образом:

  • Либо пересылаем в Избранное (действия аналогичны мобильной версии);
  • Либо сохраняем файл сами:
  1. Кликаем на гифку правой клавишей мыши.
  2. В списке выбираем «Save file as».
  3. Выбираем место хранения и подтверждаем действие.

Готово, анимация сохранена в памяти вашего компьютера.

Как искать гифки в Телеграмме

В сообщениях вы можете отправлять не только те файлы, которые есть на смартфоне или ПК. Встроенный бот предлагает поиск по гиф-файлам в режиме онлайн. Воспользоваться им можно так:

Как создать гифку

При желании в Телеграм очень легко создать собственную гифку. Ход действий следующий:

  1. Открываем диалог и выбираем пункт «Видео».
  2. Выбираем из галереи короткое видео или записываем ролик онлайн.
  3. После завершения записи откроется окно, в котором необходимо отметить кнопку отключения звука «Mute», также вы можете уменьшить количество кадров с помощью ползунка. Когда все будет готово жмите Отправить.
  4. Телеграм преобразует видео в зацикленную gif-анимацию и добавит ее диалог.

Готово, вы сами создали и отправили гифку!

Видео

Телеграмм – это мессенджер, который позволяет отправлять файлы любых форматов. В том числе – gif-анимации. Функция доступна во всех версиях приложения. Кроме того, Telegram позволяет сохранять полученные гифки в разделе Избранное или в памяти устройства. Также каждый пользователь может создать собственную гифку.

Рекомендуемые сервисы для Telegram:

  • Godlikes — Качественные подписчики по специальной цене! Стоимость 1-го подписчика всего 5,5 рубля! ⚡️ 5 дней контроля отписок!
  • Morelikes — Накрутка просмотров: 128 руб. за 100 шт., подписчиков: боты от 0.74 руб , живые подписчики от 3.36 руб. за 1 шт.
  • Bosslike.ru — ⚡️⚡️⚡️ Бесплатные подписчики и просмотры ⚡️⚡️⚡️
  • Mrpopular — подписчики от 0.14 руб ⚡️; просмотры от 0.09 руб ⚡️

Источник: telegrammix.ru

Загружайте GIF-файлы и стикеры или создавайте их из видео в формате MP4

Выражайте эмоции с помощью GIF-анимаций. Вы можете обрезать и кадрировать изображения, а также добавлять подписи к ним и делиться ими в Твиттере, Facebook или на любом другом сайте.

Перетащите сюда файл для загрузки

Не более 10 файлов в формате GIF или MP4

Загрузка по URL

URL любого файла в формате GIF, MP4, PNG или JPG

Начало работы в Tenor

Пополняйте коллекцию

Загружайте GIF-изображения, стикеры и короткие MP4-файлы в профиль Tenor, редактируйте их, а затем делитесь с родными и друзьями

Добавляйте теги и ищите по категориям

Добавляйте теги, чтобы было проще находить GIF-изображения и делиться ими. Ваш контент доступен в сервисах и приложениях партнеров Tenor, например в Твиттере и Gboard.

Делитесь с миллионами

Получайте уведомления о том, насколько популярны ваши GIF-файлы, как часто пользователи находят их и делятся ими.

Создавайте собственные GIF-изображения

Создавать анимированные изображения очень легко. Просто загрузите в Tenor файлы в формате GIF или MP4 и отредактируйте их: добавьте надписи, обрежьте или кадрируйте.

Делитесь файлами везде

Загруженные GIF-изображения можно в любой момент найти в продуктах Tenor, например на сайте или в GIF Keyboard. Мы также обеспечиваем работу системы для поиска GIF-файлов в различных приложениях, например в Твиттере, Gboard, Facebook, LINE и WhatsApp.

Источник: tenor.com

Рейтинг
( Пока оценок нет )
Загрузка ...