Description
Golang Webp library for encoding and decoding, using C binding for Google libwebp
go-webp alternatives and similar packages
Based on the "Images" category.
Alternatively, view go-webp alternatives based on common mentions on social networks and blogs.
-
gocv
Go package for computer vision using OpenCV 4 and beyond. Includes support for DNN, CUDA, and OpenCV Contrib. -
pigo
Fast face detection, pupil/eyes localization and facial landmark points detection library in pure Go. -
darkroom
An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency. -
fastimage
Finds the type and/or size of a remote image given its uri, by fetching as little as needed. -
LookUp
:mag: Pure Go implementation of fast image search and simple OCR, focused on reading info from screenshots -
webp-server
Simple and minimal image server capable of storing, resizing, converting and caching images.
WorkOS - The modern identity platform for B2B SaaS
Do you think we are missing an alternative of go-webp or a related project?
README
[logo](test_data/images/logo.jpg)
go-webp
Golang Webp library for encoding and decoding, using C binding for Google libwebp
Requirements
Benchmarks
% 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:
brew install webp
Linux:
sudo apt-get update
sudo apt-get install libwebp-dev
Install
go get -u github.com/kolesa-team/go-webp
Examples
Decode:
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)
}
}
go run example/decode/main.go
Encode
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)
}
}
go run example/encode/main.go
TODO
- return aux stats
- container api
- incremental decoding
License
MIT licensed. See the LICENSE file for details.
*Note that all licence references and agreements mentioned in the go-webp README section above
are relevant to that project's source code only.