Home

Awesome

IdentIcon

CircleCI Go Report Card

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.

Installation

$ go get github.com/rrivera/identicon

Usage


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

Examples

5x5

rriverajohndoeabc123modulo
rriverajohndoeabc123modulo
rriverajohndoeabc123modulo
rriverajohndoeabc123modulo

7x7

rriverajohndoeabc123modulo
rriverajohndoeabc123modulo
rriverajohndoeabc123modulo
rriverajohndoeabc123modulo

10x10

rriverajohndoeabc123modulo
rriverajohndoeabc123modulo
rriverajohndoeabc123modulo
rriverajohndoeabc123modulo

View examples

Documentation

Changelog

Contribution

License

MIT

Copyright (c) 2018-present, Ruben Rivera