Git Product home page Git Product logo

lottie-converter's Introduction

Lottie Animations (.json) and Telegram Stickers (*.tgs) to GIF/PNG/APNG/WEBP/WEBM converter

CI | Build & Test CD | Release & Push to Dockerhub


To easily transfer Telegram stickers to WhatsApp you can use Telegram Bot

๐Ÿ‘‰ https://t.me/tgtowabot ๐Ÿ‘ˆ


How to use

There are 2 options:

  • Run using Docker. One-line command, the option requires only Docker installed
  • Download and run compiled executable files. The option requires run-time dependecies installed

Using Docker

Replace with directory with Lottie animations / Telegram stickers and run:

  • Convert to GIF:
    docker run --rm -v <path to directory>:/source edasriyan/lottie-to-gif
  • Convert to PNG:
    docker run --rm -v <path to directory>:/source edasriyan/lottie-to-png
  • Convert to APNG:
    docker run --rm -v <path to directory>:/source edasriyan/lottie-to-apng
  • Convert to WEBP:
    docker run --rm -v <path to directory>:/source edasriyan/lottie-to-webp
  • Convert to WEBM:
    docker run --rm -v <path to directory>:/source edasriyan/lottie-to-webm

You can provide parameters via env variables:

  • HEIGHT: Output image height. Default: 512
  • WIDTH: Output image width. Default: 512
  • FPS: Output frame rate. Default: apng,png,webp - 60; gif - 50
  • QUALITY: Output quality. Default: 90
  • THREADS: Number of threads to use. Default: number of CPUs

Example:

docker run --rm -e HEIGHT=256 -e WIDTH=256 -e FPS=30 -v /home/ed/Downloads/lottie-animations:/source edasriyan/lottie-to-apng

Results will be saved next to each source file in the same directory.

Using compiled executables

  1. Install run-time dependencies. Make sure the path to them present in PATH variable:

    • gifski if you want to convert to GIF
    • ffmpeg if you want to convert to APNG or WEBM
    • img2webp if you want to convert to WEBP
  2. Download executable from releases section of this repo for your OS and arch

  3. In downloaded archive find the following executable scripts:

    • lottie_to_apng.sh
    • lottie_to_gif.sh
    • lottie_to_png.sh
    • lottie_to_webp.sh
    • lottie_to_webm.sh

    All of them have the same CLI:

    $ ./bin/lottie_to_gif.sh -h                       
    usage: ./bin/lottie_to_gif.sh [--help] [--output OUTPUT] [--height HEIGHT] [--width WIDTH] [--threads THREADS] [--fps FPS] [--quality QUALITY] path
    
    Lottie animations (.json) and Telegram stickers for Telegram (*.tgs) to animated .gif converter
    
    Positional arguments:
    path              Path to .json or .tgs file to convert
    
    Optional arguments:
    -h, --help        show this help message and exit
    --output OUTPUT   Output file path
    --height HEIGHT   Output image height. Default: 
    --width WIDTH     Output image width. Default: 512
    --fps FPS         Output frame rate. Default: 50
    --threads THREADS Number of threads to use. Default: number of CPUs
    --quality QUALITY Output quality. Default: 90
    

Build

  1. Install dependencies

    1. Make sure you have C++17 compiler, make, cmake and conan tools installed; otherwise install them
    2. Detect your conan profile
      conan profile detect
      
    3. Install conan dependencies
      conan install --build=missing .
      
  2. Invoke conan preset

    • Linux & MacOS
      cmake --preset conan-release
      
    • Windows
      cmake --preset conan-default
      
  3. Build

    cmake -DCMAKE_BUILD_TYPE=Release CMakeLists.txt && cmake --build . --config Release
    
    M1 troubleshooting Run the following command and try again:
    echo '#if defined(__ARM_NEON__)
    
    #include "vdrawhelper.h"
    
    void memfill32(uint32_t *dest, uint32_t value, int length)
    {
        memset(dest, value, length);
    }
    
    static void color_SourceOver(uint32_t *dest, int length, uint32_t color, uint32_t alpha)
    {
        int ialpha, i;
    
        if (alpha != 255) color = BYTE_MUL(color, alpha);
        ialpha = 255 - vAlpha(color);
        for (i = 0; i < length; ++i) dest[i] = color + BYTE_MUL(dest[i], ialpha);
    }
    
    void RenderFuncTable::neon()
    {
        updateColor(BlendMode::Src , color_SourceOver);
    }
    #endif
    ' > _deps/rlottie-src/src/vector/vdrawhelper_neon.cpp
    
  4. Convert!

    • To convert to GIF:
      ./bin/lottie_to_gif.sh /home/ed/Downloads/animation.json
      
    • To convert to PNG:
      ./bin/lottie_to_png.sh /home/ed/Downloads/animation.json
      
    • To convert to APNG:
      ./bin/lottie_to_apng.sh /home/ed/Downloads/animation.json
      
    • To convert to WEBP:
      ./bin/lottie_to_webp.sh /home/ed/Downloads/animation.json
      
    • To convert to WEBM:
      ./bin/lottie_to_webm.sh /home/ed/Downloads/animation.json
      

    Results will be saved next to each source file in the same directory.

Notices

lottie-converter's People

Contributors

ed-asriyan avatar sauravdharwadkar avatar ruminateer avatar yqt avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.