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 |