Files
TrafficSpeed/internal/project/video_iterator_test.go
2025-06-13 10:00:56 -04:00

51 lines
1019 B
Go

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)
}
}
}