IdentIcon is an open source avatar generator inspired by GitHub avatars.
IdentIcon uses a deterministic algorithm that generates an image (using Golang's stdlib image encoders) based on a text (Generally Usernames, Emails or just random strings), by hashing it and iterating over the bytes of the digest to pick whether to draw a point, pick a color or choose where to go next.
IdentIcon's Generator enables the creation of customized figures: (NxN size, points density, custom color palette) as well as multiple exporting formats in case the developers want to generate their own images.
$ go get github.com/rrivera/identicon
import (
"os"
"github.com/rrivera/identicon"
)
// New Generator: Rehuse
ig, err := identicon.New(
"github", // Namespace
5, // Number of blocks (Size)
3, // Density
)
if err != nil {
panic(err) // Invalid Size or Density
}
username := "rrivera" // Text - decides the resulting figure
ii, err := ig.Draw(username) // Generate an IdentIcon
if err != nil {
panic(err) // Text is empty
}
// File writer
img, _ := os.Create("icon.png")
defer img.Close()
// Takes the size in pixels and any io.Writer
ii.Png(300, img) // 300px * 300px
rrivera | johndoe | abc123 | modulo |
---|---|---|---|
rrivera | johndoe | abc123 | modulo |
---|---|---|---|
rrivera | johndoe | abc123 | modulo |
---|---|---|---|
MIT
Copyright (c) 2018-present, Ruben Rivera