Popularity
3.1
Growing
Activity
5.8
-
33
5
7

Description

Golang Webp library for encoding and decoding, using C binding for Google libwebp

Programming language: Go
License: MIT License
Tags: Images     Webp     Jpeg     Picture     Encode     Decode    

go-webp alternatives and similar packages

Based on the "Images" category.
Alternatively, view go-webp alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of go-webp or a related project?

Add another 'Images' Package

README

[logo](test_data/images/logo.jpg)

go-webp

Build Status GoDoc Go Report codecov

Golang Webp library for encoding and decoding, using C binding for Google libwebp

Requirements

libwebp

Benchmarks

% go test -bench "^BenchmarkDecode" ./webp                                                                                
goos: darwin
goarch: amd64
pkg: github.com/kolesa-team/go-webp/webp
BenchmarkDecodeLossy-12                       45          25965139 ns/op
BenchmarkDecodeXImageLossy-12                 13          90735879 ns/op
BenchmarkDecodeLossless-12                    64          18887482 ns/op
BenchmarkDecodeXImageLossless-12              27          42422596 ns/op
PASS
ok      github.com/kolesa-team/go-webp/webp     7.877s

Install libwebp

MacOS:

brew install webp

Linux:

sudo apt-get update
sudo apt-get install libwebp-dev

Install

go get -u github.com/kolesa-team/go-webp

Examples

Decode:

package main

import (
    "image/jpeg"
    "log"
    "os"

    "github.com/kolesa-team/go-webp/decoder"
    "github.com/kolesa-team/go-webp/webp"
)

func main() {
    file, err := os.Open("test_data/images/m4_q75.webp")
    if err != nil {
        log.Fatalln(err)
    }

    output, err := os.Create("example/output_decode.jpg")
    if err != nil {
        log.Fatal(err)
    }
    defer output.Close()

    img, err := webp.Decode(file, &decoder.Options{})
    if err != nil {
        log.Fatalln(err)
    }

    if err = jpeg.Encode(output, img, &jpeg.Options{Quality:75}); err != nil {
        log.Fatalln(err)
    }
}
go run example/decode/main.go

Encode

package main

import (
    "github.com/kolesa-team/go-webp/encoder"
    "github.com/kolesa-team/go-webp/webp"
    "image/jpeg"
    "log"
    "os"
)

func main() {
    file, err := os.Open("test_data/images/source.jpg")
    if err != nil {
        log.Fatalln(err)
    }

    img, err := jpeg.Decode(file)
    if err != nil {
        log.Fatalln(err)
    }

    output, err := os.Create("example/output_decode.webp")
    if err != nil {
        log.Fatal(err)
    }
    defer output.Close()

    options, err := encoder.NewLossyEncoderOptions(encoder.PresetDefault, 75)
    if err != nil {
        log.Fatalln(err)
    }

    if err := webp.Encode(output, img, options); err != nil {
        log.Fatalln(err)
    }
}
go run example/encode/main.go

TODO

  • return aux stats
  • container api
  • incremental decoding

License

MIT licensed. See the LICENSE file for details.


*Note that all licence references and agreements mentioned in the go-webp README section above are relevant to that project's source code only.