From 3276ff864a4048a05ad3f0b34953ce937be1500c Mon Sep 17 00:00:00 2001 From: Martin Lehoux Date: Sat, 4 Apr 2020 13:28:28 -0700 Subject: feat - Save frame to file --- image.go | 26 ++++++++++++++++++++++++++ main.go | 18 ++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 image.go create mode 100644 main.go diff --git a/image.go b/image.go new file mode 100644 index 0000000..fe9b67f --- /dev/null +++ b/image.go @@ -0,0 +1,26 @@ +package main + +import ( + "fmt" + "os" +) + +type Pixel struct { + r, g, b int +} + +type Frame [HEIGHT][WIDTH]Pixel + +func (frame Frame) Save(filename string) { + f, err := os.Create(filename) + if err != nil { + panic(nil) + } + defer f.Close() + f.WriteString(fmt.Sprintf("P3\n%d %d\n255\n", WIDTH, HEIGHT)) + for _, row := range frame { + for _, pixel := range row { + f.WriteString(fmt.Sprintf("%d %d %d ", pixel.r, pixel.g, pixel.b)) + } + } +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..f8245a4 --- /dev/null +++ b/main.go @@ -0,0 +1,18 @@ +package main + +const HEIGHT = 100 +const WIDTH = 200 + +func main() { + frame := Frame{} + for x := 0; x < HEIGHT; x++ { + for y := 0; y < WIDTH; y++ { + frame[HEIGHT-1-x][y] = Pixel{ + r: 255 * y / WIDTH, + g: 255 * x / HEIGHT, + b: 255 * 0.2, + } + } + } + frame.Save("img.ppm") +} -- cgit v1.3