webp

by chai2010

chai2010 / webp

WebP decoder and encoder for Go (Zero Dependencies).

240 Stars 41 Forks Last release: Not found BSD 3-Clause "New" or "Revised" License 140 Commits 2 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

  • 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.