被 AI 替代应该就在不远的将来
提问:golang 各种图片 转 webp 代码
一秒之后......
package main
import (
"fmt"
"image"
"image/gif"
"image/jpeg"
"image/png"
"os"
"github.com/chai2010/webp"
)
func main() {
// 读取图片文件
file, err := os.Open("test.jpg")
if err != nil {
fmt.Println(err)
}
// 解码 jpg 格式图片
img, err := jpeg.Decode(file)
if err != nil {
fmt.Println(err)
}
// 将图片转换为 webp 格式
err = webp.Encode(img, "test.webp", &webp.Options{Lossless: true})
if err != nil {
fmt.Println(err)
}
// 关闭文件句柄
file.Close()
// 以下是其他格式的转换,只需要替换 jpeg 为其他格式即可,如 png、gif 等等。
// 读取图片文件
file, err := os.Open("test.png")
if err != nil {
fmt.Println(err)
}
// 解码 png 格式图片
img, err := png.Decode(file)
if err != nil {
fmt.Println(err)
}
// 将图片转换为 webp 格式
err = webp.Encode(img, "test.webp", &webp.Options{Lossless: true})
if err != nil {
fmt.Println(err)
}
// 关闭文件句柄
file.Close()
// 读取图片文件
file, err := os.Open("test.gif")
if err != nil {
fmt.Println(err)
}
// 解码 gif 格式图片,返回 image.Image 和 *gif.GIF 类型的数据,其中 image.Image 用于转换 webp 格式,*gif.GIF 用于保存动态图片的信息。
img, g, err := gif.Decode(file) // g 为 *gif.GIF 类型的数据,用于保存动态图片的信息。
if err != nil { // 如果不是动态图片,则 g 为 nil。
fmt.Println(err)
}
// 将图片转换为 webp 格式
if g == nil { // 静态图片直接转换
err = webp.Encode(img, "test.webp", &webp.Options{Lossless: true})
if err != nil {
fmt.Println(err)
}
} else { // 动态图片需要使用 gif2webp 工具进行转换
err = webp.EncodeGIF(img, g, "test.webp", &webp.Options{Lossless: true})
if err != nil {
fmt.Println(err)
}
}
// 关闭文件句柄
file.Close()
}
虽然代码不能完美运行,还需要稍作修改,但思路是完全没有问题的....
被淘汰指日可待
本文来自博客园,作者:bigroc,转载请注明原文链接:https://www.cnblogs.com/bigroc/p/16966734.html
blog:http://www.bigroc.cn 博客园:https://www.cnblogs.com/bigroc