Need help with webp?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

chai2010
265 Stars 44 Forks BSD 3-Clause "New" or "Revised" License 140 Commits 19 Opened issues

Description

WebP decoder and encoder for Go (Zero Dependencies).

Services available

!
?

Need anything else?

Contributors list

# 10,528
HTML
webasse...
k8s
lex
127 commits
# 162,186
Shell
geoip2
maxmind
C++
3 commits
# 139,413
Shell
golang
webp
Git
2 commits
  • Go语言QQ群: 102319854, 1055927514
  • 凹语言(凹读音“Wa”)(The Wa Programming Language): https://github.com/wa-lang/wa

webp

██╗    ██╗███████╗██████╗ ██████╗
██║    ██║██╔════╝██╔══██╗██╔══██╗
██║ █╗ ██║█████╗  ██████╔╝██████╔╝
██║███╗██║██╔══╝  ██╔══██╗██╔═══╝
╚███╔███╔╝███████╗██████╔╝██║
 ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═╝

Build Status GoDoc

Benchmark

Install

Install

GCC
or
MinGW
(download here) at first, and then run these commands:
  1. go get github.com/chai2010/webp
  2. go run hello.go

Example

This is a simple example:

package main

import ( "bytes" "fmt" "io/ioutil" "log"

"github.com/chai2010/webp"

)

func main() { var buf bytes.Buffer var width, height int var data []byte var err error

// Load file data
if data, err = ioutil.ReadFile("./testdata/1_webp_ll.webp"); err != nil {
    log.Println(err)
}

// GetInfo
if width, height, _, err = webp.GetInfo(data); err != nil {
    log.Println(err)
}
fmt.Printf("width = %d, height = %d\n", width, height)

// GetMetadata
if metadata, err := webp.GetMetadata(data, "ICCP"); err != nil {
    fmt.Printf("Metadata: err = %v\n", err)
} else {
    fmt.Printf("Metadata: %s\n", string(metadata))
}

// Decode webp
m, err := webp.Decode(bytes.NewReader(data))
if err != nil {
    log.Println(err)
}

// Encode lossless webp
if err = webp.Encode(&buf, m, &webp.Options{Lossless: true}); err != nil {
    log.Println(err)
}
if err = ioutil.WriteFile("output.webp", buf.Bytes(), 0666); err != nil {
    log.Println(err)
}

fmt.Println("Save output.webp ok")

}

Decode and Encode as RGB format:

m, err := webp.DecodeRGB(data)
if err != nil {
    log.Fatal(err)
}

data, err := webp.EncodeRGB(m) if err != nil { log.Fatal(err) }

Notes

Change the libwebp to fast method:

internal/libwebp/src/enc/config.c
WebPConfigInitInternal
config->method = 0; // 4;

BUGS

Report bugs to [email protected].

Thanks!

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.