Open
Description
Thank you for your contribution
This let me understand the operation mechanism of SSTV
Some problems were encountered in the process of using, Looking forward to your reply
Origin Image
M1
Robot36
Here are some codes I refer from sstv-cli/main.go
f, err := os.Open("./xx.png")
if err != nil {
panic(err.Error())
}
img, _, err := image.Decode(f)
if err != nil {
panic(err.Error())
}
format := &audio.Format{
NumChannels: 1,
SampleRate: 44100,
}
audio := sstv.NewMartin(sstv.Martin1, format)
fmt.Print("resizing ... ")
targetRes := audio.Resolution().Size()
currentRes := img.Bounds().Size()
if currentRes.X != targetRes.X || currentRes.Y != targetRes.Y {
img = resize.Resize(uint(targetRes.X), uint(targetRes.Y), img, resize.Lanczos3)
fmt.Print("ok\n")
} else {
fmt.Print("skipped\n")
}
fmt.Print("generating ... ")
buf := audio.Encode(img)
fmt.Print("ok\n")
fmt.Print("encoding ... ")
if wr, err := os.OpenFile("temp.wav", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.ModePerm); err == nil {
defer wr.Close()
enc := wav.NewEncoder(wr, 44100, sstv.BitDepth, 1, 1)
defer enc.Close()
if err = enc.Write(buf.AsIntBuffer()); err != nil {
fmt.Printf("failed: %s", err)
os.Exit(2)
}
fmt.Print("ok\n")
} else {
fmt.Printf("failed: %s\n", err)
os.Exit(2)
}
Metadata
Metadata
Assignees
Labels
No labels