Skip to content

It seems doesn's work #1

Open
Open
@Eminlin

Description

@Eminlin

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

image

M1

image

Robot36

image

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions