图片生成Gif的golang小工具

有几张照片想给搞成gif当做表情包,网上查了下golang image包的一些用法写了个小玩意

var path, output string
var delay int

func main() {
    flag.StringVar(&path, "p", "", "图片文件夹路径")
    flag.StringVar(&output, "o", "output.gif", "生成gif的文件名")
    flag.IntVar(&delay, "d", 5, "每张图片的展示时间*15毫秒")
    flag.Parse()

    if path == "" {
        fmt.Println("请输入图片路径")
        flag.PrintDefaults()
        return
    }


    files, err := ioutil.ReadDir(path)
    if err != nil {
        fmt.Println(err)
        return
    }

    anim := gif.GIF{}
    for _, info := range files {
        //fmt.Println("add one")

        f, err := os.Open(path + "/" + info.Name())
        if err != nil {
            fmt.Printf("Could not open file %s. Error: %s\n", info.Name(), err)
            return
        }
        defer f.Close()
        img, _, _ := image.Decode(f)


        paletted := image.NewPaletted(img.Bounds(), palette.Plan9)
        draw.FloydSteinberg.Draw(paletted, img.Bounds(), img, image.ZP)

        anim.Image = append(anim.Image, paletted)
        anim.Delay = append(anim.Delay, delay*15)
    }

    f, _ := os.Create(output)
    defer f.Close()
    gif.EncodeAll(f, &anim)
}

大家可以玩一下

你可能感兴趣的:(golang)