package project import ( "fmt" "image" "image/png" "log" "os" "testing" ) func SavePNG(img image.Image, filename string) error { if img == nil { return nil } // Save the image to a file file, err := os.Create(filename) if err != nil { return err } defer file.Close() return png.Encode(file, img) } func TestNewIterator(t *testing.T) { i, err := NewIterator("../../IMG_2399_1024.MOV") if err != nil { t.Fatalf("NewIterator() error = %v", err) } defer i.Close() os.Mkdir("testdata", 0755) n := 0 for i.Next() && n < 10 { log.Printf("Next() returned true for frame %d err:%s", i.Frame(), i.Error()) n++ frame := i.Frame() img := i.Image() log.Printf("Frame %d: Img:%T img.bounds=%#v duration=%s", frame, img, img.Bounds(), i.Duration()) // write out to testdata/%d.png if img != nil { err = SavePNG(img, fmt.Sprintf("testdata/%d.png", frame)) if err != nil { t.Errorf("SavePNG() error = %v", err) } } else { log.Printf("No image at frame %d", frame) } } }