You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Shunsuke Michii 0d036bec4c
Merge pull request #5 from saturday06/feature/lossless_encoder
10 years ago
examples Update comments 11 years ago
test/util Try to find example files in multiple directories which contains $GOPATH. 11 years ago
webp Support lossless encoder 10 years ago
.gitignore initial commit 11 years ago
.travis.yml Run tests of each libwebp versions. 11 years ago
LICENSE initial commit 11 years ago
README.md Add Godoc badge. 11 years ago

README.md

go-libwebp

Build Status GoDoc

A implementation of Go binding for libwebp written with cgo.

Usage

The examples directory contains example codes and images.

Decoding WebP into image.RGBA

package main

import (
	"github.com/harukasan/go-libwebp/test/util"
	"github.com/harukasan/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/harukasan/go-libwebp/test/util"
	"github.com/harukasan/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.Config{
		Preset:  webp.PresetDefault,
		Quality: 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

Copyright (c) 2014 MICHII Shunsuke. All rights reserved.

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