Skip to content

HugoSmits86/nativewebp

Repository files navigation

Codecov Coverage Go Reference License: MIT

Native WebP for Go

This is a native WebP encoder written entirely in Go, with no dependencies on libwebp or other external libraries. Designed for performance and efficiency, this encoder generates smaller files than the standard Go PNG encoder and is approximately 40% faster in execution.

Currently, the encoder supports only WebP lossless images (VP8L).

Benchmark

We conducted a quick benchmark to showcase file size reduction and encoding performance. Using an image from Google’s WebP Lossless and Alpha Gallery, we compared the results of our nativewebp encoder with the standard PNG decoder.


image source: https://developers.google.com/speed/webp/gallery2

PNG encoder nativeWebP encoder reduction
file size 54kb 50kb 7% smaller
encoding time 5651958 ns/op 1950541 ns/op 65% faster

Installation

To install the nativewebp package, use the following command:

go get github.com/HugoSmits86/nativewebp

Usage

Here’s a simple example of how to encode an image:

file, err := os.Create(name)
if err != nil {
  log.Fatalf("Error creating file %s: %v", name, err)
}
defer file.Close()

err = nativewebp.Encode(file, img)
if err != nil {
  log.Fatalf("Error encoding image to WebP: %v", err)
}