图片生成Gif的golang小工具
var path, output string
var delay int
func main() {
flag.StringVar(&path, "p", "", "图片文件夹路径")
flag.StringVar(&output, "o", "", "生成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)
}