- Go่ฏญ่จQQ็พค: 102319854, 1055927514
- ๅน่ฏญ่จ(ๅน่ฏป้ณโWaโ)(The Wa Programming Language): https://github.com/wa-lang/wa
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
// 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!