https://github.com/kolesa-team/go-webp
Simple and fast webp library for golang
https://github.com/kolesa-team/go-webp
decoding encoding go golang libwebp webp
Last synced: 9 months ago
JSON representation
Simple and fast webp library for golang
- Host: GitHub
- URL: https://github.com/kolesa-team/go-webp
- Owner: kolesa-team
- License: mit
- Created: 2020-02-18T09:53:07.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-11-02T21:29:30.000Z (about 2 years ago)
- Last Synced: 2024-07-31T20:52:00.873Z (over 1 year ago)
- Topics: decoding, encoding, go, golang, libwebp, webp
- Language: Go
- Homepage:
- Size: 757 KB
- Stars: 213
- Watchers: 5
- Forks: 32
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
- awesome-go-cn - go-webp - team/go-webp) (图片 / 检索及分析资料库)
- awesome-go - go-webp - Library for encode and decode webp pictures, using libwebp. (Images / Search and Analytic Databases)
- awesome-go-cn - go-webp - team/go-webp) (图片 / 检索及分析资料库)
- awesome-go - go-webp - Library for encode and decode webp pictures, using libwebp. (Images / Search and Analytic Databases)
- awesome-go-plus - go-webp - Library for encode and decode webp pictures, using libwebp.  (Images / Search and Analytic Databases)
- fucking-awesome-go - go-webp - Library for encode and decode webp pictures, using libwebp. (Images / Search and Analytic Databases)
- awesome-go - go-webp - Library for encode and decode webp pictures, using libwebp. (Images / Search and Analytic Databases)
- awesome-go-extra - go-webp - 02-18T09:53:07Z|2021-09-15T04:03:25Z| (Images / Advanced Console UIs)
- awesome-go-with-stars - go-webp - Library for encode and decode webp pictures, using libwebp. (Images / Search and Analytic Databases)
- awesome-go - kolesa-team/go-webp
- awesome-go - go-webp - Library for encode and decode webp pictures, using libwebp. (Images / Search and Analytic Databases)
- awesome-go - go-webp - Library for encode and decode webp pictures, using libwebp. (Images / Search and Analytic Databases)
README

# go-webp
[](https://travis-ci.com/github/kolesa-team/go-webp)
[](https://godoc.org/github.com/kolesa-team/go-webp)
[](https://goreportcard.com/report/github.com/kolesa-team/go-webp)
[](https://codecov.io/gh/kolesa-team/go-webp)
Golang Webp library for encoding and decoding, using **C** binding for Google libwebp
## Requirements
[libwebp](https://developers.google.com/speed/webp/docs/api)
## Benchmarks
```text
% go test -bench "^BenchmarkDecode" ./webp
goos: darwin
goarch: amd64
pkg: github.com/kolesa-team/go-webp/webp
BenchmarkDecodeLossy-12 45 25965139 ns/op
BenchmarkDecodeXImageLossy-12 13 90735879 ns/op
BenchmarkDecodeLossless-12 64 18887482 ns/op
BenchmarkDecodeXImageLossless-12 27 42422596 ns/op
PASS
ok github.com/kolesa-team/go-webp/webp 7.877s
```
## Install libwebp
#### MacOS:
```bash
brew install webp
```
#### Linux:
```bash
sudo apt-get update
sudo apt-get install libwebp-dev
```
## Install
`go get -u github.com/kolesa-team/go-webp`
## Examples
#### Decode:
```go
package main
import (
"image/jpeg"
"log"
"os"
"github.com/kolesa-team/go-webp/decoder"
"github.com/kolesa-team/go-webp/webp"
)
func main() {
file, err := os.Open("test_data/images/m4_q75.webp")
if err != nil {
log.Fatalln(err)
}
output, err := os.Create("example/output_decode.jpg")
if err != nil {
log.Fatal(err)
}
defer output.Close()
img, err := webp.Decode(file, &decoder.Options{})
if err != nil {
log.Fatalln(err)
}
if err = jpeg.Encode(output, img, &jpeg.Options{Quality:75}); err != nil {
log.Fatalln(err)
}
}
```
```bash
go run example/decode/main.go
```
#### Encode
```go
package main
import (
"github.com/kolesa-team/go-webp/encoder"
"github.com/kolesa-team/go-webp/webp"
"image/jpeg"
"log"
"os"
)
func main() {
file, err := os.Open("test_data/images/source.jpg")
if err != nil {
log.Fatalln(err)
}
img, err := jpeg.Decode(file)
if err != nil {
log.Fatalln(err)
}
output, err := os.Create("example/output_decode.webp")
if err != nil {
log.Fatal(err)
}
defer output.Close()
options, err := encoder.NewLossyEncoderOptions(encoder.PresetDefault, 75)
if err != nil {
log.Fatalln(err)
}
if err := webp.Encode(output, img, options); err != nil {
log.Fatalln(err)
}
}
```
```bash
go run example/encode/main.go
```
## TODO
- return aux stats
- container api
- incremental decoding
## License
MIT licensed. See the LICENSE file for details.