diff options
| -rw-r--r-- | image.go | 26 | ||||
| -rw-r--r-- | main.go | 18 |
2 files changed, 44 insertions, 0 deletions
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)) + } + } +} @@ -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") +} |
