图片生成Gif的golang小工具

时间:2025-03-08 07:11:14
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) }