letteravatar

Letter avatar generation for Go.
Installation
go get -u github.com/lin-coco/letteravatar
Usage
Generate a 100x100px 'A''-letter avatar:
img, err := letteravatar.Draw(100, []rune{'A'}, nil)
The third parameter options *Options can be used for customization:
type Options struct {
Font *truetype.Font
Palette []color.Color
LetterColor color.Color
PaletteKey string
}
Using a custom palette:
img, err := letteravatar.Draw(100, 'A', &letteravatar.Options{
Palette: []color.Color{
color.RGBA{255, 0, 0, 255},
color.RGBA{0, 255, 0, 255},
color.RGBA{0, 0, 255, 255},
},
})
Documentation
https://godoc.org/github.com/lin-coco/letteravatar
Examples for one letter avatars

package main
import (
"image/png"
"log"
"os"
"unicode/utf8"
"github.com/lin-coco/letteravatar"
)
var names = []string{
"Alice",
"Bob",
"Carol",
"Dave",
"Eve",
"Frank",
"Gloria",
"Henry",
"Isabella",
"James",
"Жозефина",
"Ярослав",
}
func main() {
for _, name := range names {
firstLetter, _ := utf8.DecodeRuneInString(name)
img, err := letteravatar.Draw(100, []rune{firstLetter}, nil)
if err != nil {
log.Fatal(err)
}
file, err := os.Create(name + ".png")
if err != nil {
log.Fatal(err)
}
err = png.Encode(file, img)
if err != nil {
log.Fatal(err)
}
}
}
Example for two letter avatars

// change line to:
img, err := letteravatar.Draw(100, []rune(name)[:2], nil)
Example for multiple letter avatars
self attempt to generate multiple letter avatars
// change line to:
// size of letters
img, err := letteravatar.Draw(100, []rune(name)[:size], nil)
License
The package "letteravatar" is distributed under the terms of the MIT license.
The Roboto-Medium font is distributed under the terms of the Apache License v2.0.
See LICENSE.