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
308 Stars 60 Forks BSD 3-Clause "New" or "Revised" License 140 Commits 23 Opened issues

Description

WebP decoder and encoder for Go (Zero Dependencies).

Services available

!
?

Need anything else?

Contributors list

# 9,809
HTML
webasse...
lex
flex
127 commits
# 169,944
geoip2
C++
Kotlin
Android
3 commits
# 126,273
chain
hugo
org
Emacs
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.