package main import ( "bytes" "image" "image/color" "image/png" ) func monkeyIcon() []byte { const size = 32 img := image.NewRGBA(image.Rect(0, 0, size, size)) brown := color.RGBA{110, 72, 38, 255} tan := color.RGBA{210, 175, 130, 255} pink := color.RGBA{190, 130, 110, 255} dark := color.RGBA{15, 8, 3, 255} white := color.RGBA{255, 255, 255, 255} // Ears drawn first so the head circle overlaps the inner edge naturally. fillCircle(img, 4, 13, 5, brown) fillCircle(img, 28, 13, 5, brown) fillCircle(img, 4, 13, 3, pink) fillCircle(img, 28, 13, 3, pink) fillCircle(img, 16, 15, 13, brown) // head fillEllipse(img, 16, 21, 7, 4, tan) // muzzle // Eyes: light surround, dark iris, white highlight. fillCircle(img, 11, 12, 3, tan) fillCircle(img, 21, 12, 3, tan) fillCircle(img, 11, 12, 2, dark) fillCircle(img, 21, 12, 2, dark) fillCircle(img, 12, 11, 1, white) fillCircle(img, 22, 11, 1, white) // Nostrils. fillCircle(img, 14, 21, 1, dark) fillCircle(img, 18, 21, 1, dark) var buf bytes.Buffer _ = png.Encode(&buf, img) return buf.Bytes() } func fillCircle(img *image.RGBA, cx, cy, r int, c color.RGBA) { for y := cy - r; y <= cy+r; y++ { for x := cx - r; x <= cx+r; x++ { dx, dy := x-cx, y-cy if dx*dx+dy*dy <= r*r { img.SetRGBA(x, y, c) } } } } func fillEllipse(img *image.RGBA, cx, cy, rx, ry int, c color.RGBA) { for y := cy - ry; y <= cy+ry; y++ { for x := cx - rx; x <= cx+rx; x++ { dx := float64(x-cx) / float64(rx) dy := float64(y-cy) / float64(ry) if dx*dx+dy*dy <= 1.0 { img.SetRGBA(x, y, c) } } } }