webp
βββ ββββββββββββββββββ βββββββ
βββ βββββββββββββββββββββββββββ
βββ ββ βββββββββ ββββββββββββββββ
ββββββββββββββββ βββββββββββββββ
βββββββββββββββββββββββββββββ
ββββββββ βββββββββββββββ βββ
Benchmark
Install
Install GCC
or MinGW
(download here) at first,
and then run these commands:
go get github.com/chai2010/webp
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
if data, err = ioutil.ReadFile("./testdata/1_webp_ll.webp"); err != nil {
log.Println(err)
}
if width, height, _, err = webp.GetInfo(data); err != nil {
log.Println(err)
}
fmt.Printf("width = %d, height = %d\n", width, height)
if metadata, err := webp.GetMetadata(data, "ICCP"); err != nil {
fmt.Printf("Metadata: err = %v\n", err)
} else {
fmt.Printf("Metadata: %s\n", string(metadata))
}
m, err := webp.Decode(bytes.NewReader(data))
if err != nil {
log.Println(err)
}
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 chaishushan@gmail.com.
Thanks!