被 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()
}

虽然代码不能完美运行,还需要稍作修改,但思路是完全没有问题的....

被淘汰指日可待

posted @ 2022-12-08 17:27  bigroc  阅读(54)  评论(0编辑  收藏  举报