gowebp

参考文档:https://github.com/bep/gowebp/tree/master

This library provides C bindings and an API for encoding Webp images using Google’s libwebp.

It is based on go-webp, but this includes and builds the libwebp C source from a versioned Git subtree.

编码为wepb

参考: https://github.com/bep/gowebp/blob/master/libwebp/encode_test.go

示例:

package main

import (
  "image"
  _ "image/jpeg"
  _ "image/png"
  "log"
  "os"

  "github.com/bep/gowebp/libwebp"
  "github.com/bep/gowebp/libwebp/webpoptions"
)

func main() {
  r, err := os.Open("/root/wl/tmp/d.png")
  if err != nil {
    log.Fatal(err)
  }

  img, _, err := image.Decode(r)
  if err != nil {
    log.Fatal(err)
  }
  f, err := os.Create("/root/wl/tmp/d.webp")
  if err != nil {
    log.Fatal(err)
  }

  err = libwebp.Encode(f, img, webpoptions.EncodingOptions{
    Quality: 75, EncodingPreset: webpoptions.EncodingPresetPhoto, UseSharpYuv: true,
  })
  if err != nil {
    log.Fatal(err)
  }
}

编码webpoptions.EncodingOptions配置:

  • lossy: webpoptions.EncodingOptions{Quality: 75, EncodingPreset: webpoptions.EncodingPresetPhoto, UseSharpYuv: true}
  • lossless: webpoptions.EncodingOptions{}
  • bw: webpoptions.EncodingOptions{Quality: 75}

测试编码后效果:

图片名 大小 lossy lossless
a.png 2.1M 180K 1.4M
b.png 16K 4.7K