【发布时间】:2012-01-10 13:30:38
【问题描述】:
是否有与当前每周(或可分叉)兼容的完整 WebP 编码器和解码器?
它的速度是否与标准的 png 1 相媲美?
【问题讨论】:
-
我在 2011 年问过这个问题,在 2012 年自己回答了这个问题,并在 2015 年接受了另一个答案。WebP 开发的速度没有预期的那么快 ;)
是否有与当前每周(或可分叉)兼容的完整 WebP 编码器和解码器?
它的速度是否与标准的 png 1 相媲美?
【问题讨论】:
这个人在 GitHub 上有一个包,其中包括 WebP 的编码器和解码器: https://github.com/chai2010/webp
来自自述文件:
package main
import (
"bytes"
"fmt"
"io/ioutil"
"log"
"github.com/chai2010/webp"
)
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 = webp.GetInfo(data); err != nil {
log.Println(err)
}
fmt.Printf("width = %d, height = %d\n", width, height)
// GetMetadata
if metadata, err := webp.GetMetadata(data, "ICCP"); err != nil {
fmt.Printf("Metadata: err = %v\n", err)
} else {
fmt.Printf("Metadata: %s\n", string(metadata))
}
// Decode webp
m, err := webp.Decode(bytes.NewReader(data))
if err != nil {
log.Println(err)
}
// Encode lossless webp
if err = webp.Encode(&buf, m, &webp.Options{Lossless: true}); err != nil {
log.Println(err)
}
if err = ioutil.WriteFile("output.webp", buf.Bytes(), 0666); err != nil {
log.Println(err)
}
}
【讨论】:
好的。 经过长时间的搜索,我可以说即使制作了解码器(https://github.com/golang/image/blob/master/webp/decode.go),仍然没有公开可用的编码器。
【讨论】:
Go 作者实际上 (2014/11) 在此处将 webp 添加到了他们的附加 go“图像”存储库 (bmp/tiff/webP) 中:
https://github.com/golang/image
编辑:显然 repo 不包含任何 webp 编码器/似乎是阅读器 - 只有。
(目前还没有测试过 webp 代码。在生产中使用之前可能要多留一些时间 4 测试。)
【讨论】:
找到this,虽然我不确定它是否是你想要的。此外,它似乎缺少编码器 + 它可能已经过时了当前的 Go 版本/每周版本。
【讨论】:
对于那些正在寻找更多带有 webp 解码器/编码器的软件包的人。
除了@orcaman 提到的包外,还有:
https://godoc.org/github.com/harukasan/go-libwebp/webp
https://github.com/harukasan/go-libwebp
有一段时间没有更新,但是使用本地安装的 libwebp。
【讨论】: