Skip to content

About

An implemantaion of Go bindings for libwebp.

Resources

Stars

56 stars

Watchers

10 watching

Forks

Latest commit

 

History

110 Commits

Folders and files

Repository files navigation

go-libwebp

ci GoDoc

A implementation of Go binding for libwebp.

Dependencies

  • libwebp 1.3.2 and above

Usage

The examples directory contains example codes and images.

Decoding WebP into image.RGBA

package main

import (
	"github.com/pixiv/go-libwebp/test/util"
	"github.com/pixiv/go-libwebp/webp"
)

func main() {
	var err error

	// Read binary data
	data := util.ReadFile("cosmos.webp")

	// Decode
	options := &webp.DecoderOptions{}
	img, err := webp.DecodeRGBA(data, options)
	if err != nil {
		panic(err)
	}

	util.WritePNG(img, "encoded_cosmos.png")
}

You can set more decoding options such as cropping, flipping and scaling.

Encoding WebP from image.RGBA

package main

import (
	"bufio"
	"image"

	"github.com/pixiv/go-libwebp/test/util"
	"github.com/pixiv/go-libwebp/webp"
)

func main() {
	img := util.ReadPNG("cosmos.png")

	// Create file and buffered writer
	io := util.CreateFile("encoded_cosmos.webp")
	w := bufio.NewWriter(io)
	defer func() {
		w.Flush()
		io.Close()
	}()

	config := webp.ConfigPreset(webp.PresetDefault, 90)

	// Encode into WebP
	if err := webp.EncodeRGBA(w, img.(*image.RGBA), config); err != nil {
		panic(err)
	}
}

TODO

  • Incremental decoding API
  • Container API (Animation)

License

This library is released under The BSD 2-Clause License. See LICENSE.

About

An implemantaion of Go bindings for libwebp.

Resources

Stars

56 stars

Watchers

10 watching

Forks

Releases

Packages

Used by

Contributors

Languages