package main import ( "bytes" "fmt" "image/gif" "image/jpeg" "io/ioutil" "os" ) func main() { f, err := os.Open("test.gif") if err != nil { panic(err) } defer f.Close() g, err := gif.DecodeAll(f) if err != nil { panic(err) } fmt.Println("gif has", len(g.Image), "frames") var buf bytes.Buffer if err := jpeg.Encode(&buf, g.Image[18], nil); err != nil { panic(err) } ioutil.WriteFile("18th_frame.jpg", buf.Bytes(), 0660) }