Categorygithub.com/iwind/gowebp
modulepackage
0.0.0-20240109104518-489f3429f5c5
Repository: https://github.com/iwind/gowebp.git
Documentation: pkg.go.dev

# README

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/iwind/gowebp"
)

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 = gowebp.GetInfo(data); err != nil {
		log.Println(err)
	}
	fmt.Printf("width = %d, height = %d\n", width, height)

	// GetMetadata
	if metadata, err := gowebp.GetMetadata(data, "ICCP"); err != nil {
		fmt.Printf("Metadata: err = %v\n", err)
	} else {
		fmt.Printf("Metadata: %s\n", string(metadata))
	}

	// Decode webp
	m, err := gowebp.Decode(bytes.NewReader(data))
	if err != nil {
		log.Println(err)
	}

	// Encode lossless webp
	if err = gowebp.Encode(&buf, m, &gowebp.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!

# Packages

Package webp_bench provides more benchmark for webp.
See https://github.com/dvyukov/go-fuzz.

# Functions

m is MemP or image.Image.
AsPixSilce convert a normal slice to byte slice.
No description provided by the author
No description provided by the author
No description provided by the author
DecodeGrayToSize decodes a Gray image scaled to the given dimensions.
No description provided by the author
No description provided by the author
DecodeRGBAToSize decodes a Gray image scaled to the given dimensions.
DecodeRGBToSize decodes an RGB image scaled to the given dimensions.
No description provided by the author
No description provided by the author
EncodeExactLosslessRGBA Encode lossless RGB mode with exact.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
GetMetadata return EXIF/ICCP/XMP format metadata.
No description provided by the author
No description provided by the author
NewRGB48Image returns a new RGB48Image with the given bounds.
No description provided by the author
NewRGBImage returns a new RGBImage with the given bounds.
No description provided by the author
NewWebpAnimation Initialize animation.
SetMetadata set EXIF/ICCP/XMP format metadata.
No description provided by the author
No description provided by the author
No description provided by the author

# Constants

See https://github.com/chai2010/image.

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Interfaces

No description provided by the author
MemP Image Spec (Native Endian), see https://github.com/chai2010/image.
No description provided by the author

# Type aliases

No description provided by the author