go-webp

repository·master·Indexed 43 days ago

https://github.com/kolesa-team/go-webp

A Golang library for encoding and decoding WebP images, providing a Go wrapper around the Google libwebp C library. It includes functions for converting WebP files to image.Image via webp.Decode and encoding image.Image to WebP via webp.Encode with support for lossy and lossless options.

Tokens
820
Snippets
4
Records
4
Agent score
5%

What's inside go-webp

  1. Install libwebp dependency

    master

    This library requires the Google libwebp C library to be installed on your system. Use the following commands depending on your operating system:

    MacOS:

    brew install webp

    Linux:

    sudo apt-get update
    sudo apt-get install libwebp-dev
    brew install webp
  2. Decode a WebP image

    master

    Use webp.Decode to convert a WebP file into a standard Go image.Image. You can pass &decoder.Options{} to customize the decoding process.

    Example of decoding a WebP file and saving it as a JPEG:

    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)
    	}
    }
  3. Encode an image to WebP

    master

    Use webp.Encode to convert a Go image.Image into a WebP file. You must provide encoder options, which can be created using encoder.NewLossyEncoderOptions or encoder.NewLosslessEncoderOptions.

    Example of encoding a JPEG image into a lossy WebP file:

    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)
    	}
    }