Анимация фотографий в Телеграмм

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

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

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

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

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

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

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

Telegram 6.2: Новый Фоторедактор, GIF анимации. Видеозвонки скоро

По сути своей, файлы 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

Как сохранить стикер из Телеграмма как картинку в Галерею

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

Еще по теме:  Выципеть переписку в телеге

Стикеры в Телеграмм

Где искать стикеры в Телеграмм?

Наклейки или стикеры были придуманы для выражения определённой эмоции, как и смайлики. В Telegram они есть на любые темы: добро, зло, мемы, популярные мультфильмы, фильмы и другое. Наклейки также могут дополнять мысль без лишних слов. В приложении этот список может быть открыт через чат. Нужно перейти к любой беседе из списка и выбрать иконку смайлика. В версии для ПК список будет открыт справа от окна чата. На мобильном телефоне в приложении список стикеров открывается в нижней части экрана.

Окно со стикерами

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

Как скачать стикер картинкой из Телеграмма

В ВК и других социальных сетях можно увидеть стикеры из Телеграмма. Их устанавливают при помощи ботов в самом приложении. Есть также другие способы скачать их и установить через файловый менеджер. Но проще всё же воспользоваться ботом. Необходимо открыть приложение и перейти на страницу с ботом «Sticker Downloader». На его странице описываются способы работы с ботом на английском. Ниже в списке необходимо выбрать формат, используйте кнопку All Formats, чтобы получить сразу несколько вариантов для загрузки.

Форматы

Когда вы увидите сообщение о том, что настройки сохранились (Setting Saving), можно переходить к выбору файла. Далее необходимо открыть тот стикерпак в Телеграмм, в котором есть наклейка для загрузки. В чат с ботом нужно добавить её, через несколько секунд он вернётся с предложением загрузить файл в память телефона.

Форматы

Варианты для загрузки будут предоставлены в разных форматах. Можно будет выбрать изображение в JPEG, PNG и других. Выберите тот формат, который подходит, чтобы началась загрузка.

Бот для загрузки

Теперь чтобы скачать файл в Галерею из Телеграмма, выберите кнопку с тремя точками вверху и нажмите «Сохранить в галерею». Если необходимо скачать весь набор, выберите каждую наклейку по отдельности и повторите процедуру загрузки.

Приложение для загрузки стикеров в Телеграмме

Есть более комфортное решение для загрузки стикерпаков и отдельных наклеек из Телеграмм. Для этого используют мобильное приложение для телефона. Загружать и выгружать наклейки умеет программа Stickers для Телеграмм, которую можно найти в Play Market для телефонов Андроид. Это полноценный сборник стикеров, которые были созданы отдельными разработчиками и предлагаются бесплатно. Также приложение позволяет скачивать их в память телефона и использовать в других приложениях.

Приложение для загрузки

Пользователь может найти дополнительные стикеры без загрузки других паков в своём приложении Телеграмм.

  1. Перейдите в чат с любым человеком из списка контактов;
  2. Нажмите на кнопку со смайликом в строке чата;
  3. Выберите раздел со стикерами и нажмите на кнопку «Настройки»;
  4. Нажмите на интересующий набор и пересмотрите их. Для добавления нового требуется нажать на кнопку «Add».

Наклейки представляют собой обычные изображения с определённым форматом. Чаще всего используется PNG и SVG, которые дают возможность создавать их прозрачными или полупрозрачными. Если среди всех стикерпаков нет подходящих, пользователь может создать собственный. Это делается как при помощи самого месседжера, так и сторонними приложениями.

Что это за видеостикеры в Телеграмм?

У пользователей есть возможность видеть в приложении видеостикеры – это особые наклейки, созданные по сложной технологии. Они используют формат хранения webm и поддерживают прозрачность. В отличие от обычных, наклейки автоматически воспроизводятся и по способу отображения схожи с гиф-анимациями. Время воспроизведение не может превышать 3 секунды, а частота кадров – 30 FPS. На готовый файл Телеграмм также установил рамки – 256 кб.

Еще по теме:  Боты в Телеграмм о машине бесплатно

Видеостикеры

Как создать свои стикеры в Телеграмм

В настройках приложения существуют функции, которые позволяют создавать стикеры. Юзерам, которые пытаются их сделать впервые лучше использовать стороннее приложение Sticker Maker, которое также может быть загружено в Плей Маркете.

Приложение Sticker Maker

В нём уже содержатся готовые стикеры, если они не понравятся с помощью встроенного инструмента создайте свой набор. Перед этим приготовьте изображения в формате PNG в галерее. Они должны быть с размерами 512 x 512 пикселей.

Настройка стикера в приложении

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

Стикеры из приложения

  • Добавьте подпись стикера, которая может дополнить его смысл;
  • Кнопку «Добавить» нужно пока пропустить.
  • Теперь нужно перейти в приложение Телеграмм и вызвать бота «Stickers» через строку поиска. Бот покажет команды для управления, среди них нужно найти «Добавить стикер». Бот даст ссылку для загрузки набора. Её нужно выбрать и указать через проводник, какие картинки выбрать. Если будут проблемы с загрузкой, выполните переход в файловый менеджер и найдите нужные картинки по названию. Чтобы долго не искать, подписывайте стикеры так, чтобы вы смогли их потом найти в проводнике при загрузке.

    Видеоинструкция

    Человек из видео научит вас загружать в галерею любые стикеры из Телеграмма в виде обычного изображения.

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

    Телеграмм-боты редакторы фото и видео: 6 лучших

    Редактировать фотографии можно через приложения, программы на компьютере. А можно отправить фото боту в Телеграм, и он обработает ее. Ниже мы собрали самых лучших ботов по обработке изображений в Телеграм.

    Считается первым редактором для изображений в Телеграм. Бот платный (1 месяц – 99рублей), и для начала работы нужно подписаться на канал, который бон пришлет в ответном сообщении. Среди его функций есть эффекты, улучшения и фото-мозаика. Оплачивая доступ к одному боту, вы получаете бонусом еще 6 ботов.

    В этом боте собраны программы для редактирования фотографий и видео. Программы доступны на ПК и Андроиде. После проверки капчи бот отправит ссылки на скачивание Adobe Photoshop. Если вы не хотите возиться с обработкой, то можно оплатить услуги специалиста. Он за определенную сумму сделает из вашей фотографии конфетку: применение фильтра 10 рублей, замена фона/удаление предметов – 20 рублей и другое. Дополнительно можно заказать создание визитки, баннера.

    Скинет вам обои для телефона. Больше подойдет для детей и подростков, так как в его функционале темы Мульт герои, Принцессы, Аниме, Пони и другие.

    Создаст прикольный мемасик. Если ничего не понятно по функционалу бота, то смотрите небольшие видеоуроки по созданию. Есть уже готовые шаблоны всем знакомых картинок (ДиКаприо, Фрай, Губка Боб и другие). Можно указать стиль мемов (классический или современный) и язык (10 вариантов).

    Порежет любое изображение на 12 частей. По информации в боте он режет изображения в размере 3х3, 3х4 и 3х2. Он сам определяет размер, на который будет разрезать фотографию. Окончательный результат зависит от размера загружаемого файла.

    Если вам не хватило функционала ботов в статье, то в каталоге Botsila.ru собрано больше умных помощников. Нужно скачать музыку, видео, поработать над текстом или узнать последние новости? Боты для любой тематики собраны для вас в одном месте.

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

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