telegram_sticker_converter/README.md

3.1 KiB

Telegram sticker converter

Required system binaries

  • ffmpeg 7.1.1

Build requirements

  • Go 1.24

Supported formats

  • TGS
  • WEBP
  • WEBM

Supported transformations

Input Output formats
TGS PNG (first frame, all frames, N frame, frame range)
JPEG (first frame, all frames, N frame, frame range)
WEBP (first frame, all frames, N frame, frame range)
Lottie JSON
GIF
WEBM
MP4
WEBP PNG
JPEG
WEBM MP4
GIF
PNG (first frame, all frames, N frame, frame range)
JPEG (first frame, all frames, N frame, frame range)
WEBP (first frame, all frames, N frame, frame range)

Examples

Extract frame from TGS

package main
import (
	"context"
	"os"

	converter "github.com/yazmeyaa/telegram_sticker_converter"
	"github.com/yazmeyaa/telegram_sticker_converter/tgs"
)


func main() {
	conv := tgs.NewConverter()

	r, err := os.Open("./sticker.tgs")
	defer r.Close()
	w, err := os.Create("./sticker.png")
	defer w.Close()
	opts := converter.TGSTransformOptions{
		Format:       converter.FormatPNG,
		Frame:        converter.FrameN,
		FrameIndex:   10,
		ResizeWidth:  1024,
		ResizeHeight: 1024,
	}
	if err := conv.Transform(context.Background(), r, w, opts); err != nil {
		panic(err)
	}
}

Convert TGS to video

package main
import (
	"context"
	"os"

	converter "github.com/yazmeyaa/telegram_sticker_converter"
	"github.com/yazmeyaa/telegram_sticker_converter/tgs"
)


func main() {
	conv := tgs.NewConverter()

	r, err := os.Open("./sticker.tgs")
	defer r.Close()
	w, err := os.Create("./sticker.mp4")
	defer w.Close()
	opts := converter.TGSTransformOptions{
		Format:       converter.FormatMP4,
		ResizeWidth:  1024,
		ResizeHeight: 1024,
	}
	if err := conv.Transform(context.Background(), r, w, opts); err != nil {
		panic(err)
	}
}

Convert TGS to frames array (ZIP)

package main
import (
	"context"
	"os"

	converter "github.com/yazmeyaa/telegram_sticker_converter"
	"github.com/yazmeyaa/telegram_sticker_converter/tgs"
)


func main() {
	conv := tgs.NewConverter()

	r, err := os.Open("./sticker.tgs")
	defer r.Close()
	w, err := os.Create("./sticker.zip")
	defer w.Close()
	opts := converter.TGSTransformOptions{
		Format:       converter.FormatPNG,
        Frame:        converter.FrameAll,
		ResizeWidth:  1024,
		ResizeHeight: 1024,
	}
	if err := conv.Transform(context.Background(), r, w, opts); err != nil {
		panic(err)
	}
}