Node Js genava
Generate a unique composite avatar image from random source parts (arms, legs, body, etc), based on a seed.
Requires GraphicsMagick to be installed.
There are currently two themes: "default" is a port of the monsterid theme from PHP and "lemm" is a port of the hand-drawn monster parts included with the Wordpress monsterid plugin.
Note that generating images can be processor and memory intensive, so it is highly recommended that all files generated are cached, as seen in the example below.
Example avatars
default theme
lemm theme
Installation
$ npm install genava
How to use
var genava = require('genava');
var fs = require('fs');
function avatar(user_id, options, cb) {
var filename = './avatarcache/'+user_id+'.w.png';
fs.exists(filename, function(exists) {
if(exists) return cb(null, filename);
else {
genava.gen(user_id, options, function(err, file) {
return fs.writeFile(filename, file, {encoding:'binary'}, function(err) {
return cb(err, filename);
});
});
}
});
};
avatar(some_user_id, {theme:'lemm', bg:'#ffffff'}, function(err, filename) {
console.log("Saved avatar as: "+filename);
});
avatar(some_user_id, {bg:'#000000'}, function(err, filename) {
console.log("Saved avatar as: "+filename);
});
avatar(some_user_id, {theme:'/path/to/custom/theme'}, function(err, filename) {
console.log("Saved avatar as: "+filename);
});
TODO
- option to specify size of resultant image
- option to disable any heavy image manipulation and/or tweak theme settings
- function to handle caching of avatars
- more built-in themes (just submit a pull request or email them to me)
Credits