package main import ( "errors" "image" "image/color" "image/png" "io" ) var errEncodePng = errors.New("не удалось создать png изображение") func createBarnsleyFernPng(s *settings, w io.Writer) error { img := newImageWithBackGround(s.X, s.Y, s.BG) drawBarnsleyFern(img, newColorFunc(s.CM), s.Dots) if err := png.Encode(w, img); err != nil { return errors.Join(errEncodePng, err) } return nil } func newImageWithBackGround(x, y int, background color.Color) *image.RGBA { img := createImage(x, y) fillBackground(img, background) return img } func createImage(x, y int) *image.RGBA { rect := image.Rectangle{ image.Point{0, 0}, image.Point{x, y}, } return image.NewRGBA(rect) } func fillBackground(img *image.RGBA, c color.Color) { rect := img.Bounds() for x := range rect.Max.X { for y := range rect.Max.Y { img.Set(x, y, c) } } }