avataaars-generator icon indicating copy to clipboard operation
avataaars-generator copied to clipboard

API to generate avatar

Open gblachonupg opened this issue 5 years ago • 10 comments

Hello,

Do you have plan to allow us to generate avatar on demand using url ?

What i mean is, i would like to generate an avatar for each new user in my product and store it on my database.

Could you give me some tips to do that ?

Tanks !

gblachonupg avatar Nov 20 '18 12:11 gblachonupg

I was just about creating this issue when I found this 👆. I think an API should be provided for developers to generate avatars on the go using a URL.

It would make it possible for users to generate their own avatars in app.

I would really love an api ♥ ✌

ismailnurudeen avatar Dec 28 '18 08:12 ismailnurudeen

I'd love an endpoint for a random avatar. Something like https://getavataaars.com/?random that'd then lead to a randomised avatar.

ChildishGiant avatar Mar 13 '19 17:03 ChildishGiant

If this helps anyone: I use these C# methods to randomly generate and create a url for an avatar. Using any browser or I use HttpClient I download that as a file and save it.

public class CreateAccountRequest : SimpleCredentials
    {
        public Genders Gender { get; set; }
        public string FirstName { get; set; }
        public string MiddleName { get; set; }
        public string LastName { get; set; }

        
        public string AvatarGenerator()
        {

            var topTypes = new List<string>()
            {
                "NoHair","Eyepatch","Hat","Hijab","Turban","WinterHat1","WinterHat2","WinterHat3","WinterHat4","LongHairBigHair","LongHairBob","LongHairBun","LongHairCurly","LongHairCurvy","LongHairDreads","LongHairFrida","LongHairFro","LongHairFroBand","LongHairNotTooLong","LongHairShavedSides","LongHairMiaWallace","LongHairStraight","LongHairStraight2","LongHairStraightStrand","ShortHairDreads01","ShortHairDreads02","ShortHairFrizzle","ShortHairShaggyMullet","ShortHairShortCurly","ShortHairShortFlat","ShortHairShortRound","ShortHairShortWaved","ShortHairSides","ShortHairTheCaesar","ShortHairTheCaesarSidePart"
            };
            var top = RandomFromList(topTypes);

            var topColors = new List<String>()
            {
                "Black","Blue01","Blue02","Blue03","Gray01","Gray02","Heather","PastelBlue","PastelGreen","PastelOrange","PastelRed","PastelYellow","Pink","Red","White"
            };
            var hairColor = RandomFromList(topColors);

            var accessories = new List<string>()
            {
                "Blank","Kurt","Prescription01","Prescription02","Round","Sunglasses","Wayfarers"
            };
            var accessory = RandomFromList(accessories);

            var facialHairTypes = new List<string>()
            {
                "Blank","BeardMedium","BeardLight","BeardMagestic","MoustacheFancy","MoustacheMagnum"
            };
            var facialHair = RandomFromList(facialHairTypes);

            var facialHairColors = new List<String>()
            {
                "Auburn","Black","Blonde","BlondeGolden","Brown","BrownDark","Platinum","Red"
            };
            var facialColor = RandomFromList(facialHairColors);

            var clothingType = new List<String>()
            {
                "BlazerShirt","BlazerSweater","CollarSweater","GraphicShirt","Hoodie","Overall","ShirtCrewNeck","ShirtScoopNeck","ShirtVNeck"
            };
            var clothing = RandomFromList(clothingType);

            var clothColor = new List<String>()
            {
                "Black","Blue01","Blue02","Blue03","Gray01","Gray02","Heather","PastelBlue","PastelGreen","PastelOrange","PastelRed","PastelYellow","Pink","Red","White"
            };
            var clothingColor = RandomFromList(clothColor);

            var eyeType = new List<String>()
            {
                "Close","Cry","Default","Dizzy","EyeRoll","Happy","Hearts","Side","Squint","Surprised","Wink","WinkWacky"
            };
            var eyes = RandomFromList(eyeType);

            var eyeBrowType = new List<String>()
            {
                "Angry","AngryNatural","Default","DefaultNatural","FlatNatural","RaisedExcited","RaisedExcitedNatural","SadConcerned","SadConcernedNatural","UnibrowNatural","UpDown","UpDownNatural"
            };
            var eyeBrows = RandomFromList(eyeBrowType);

            var mouthType = new List<String>()
            {
                "Concerned","Default","Disbelief","Eating","Grimace","Sad","ScreamOpen","Serious","Smile","Tongue","Twinkle","Vomit"
            };
            var mouth = RandomFromList(mouthType);

            var skinColor = new List<String>()
            {
                "Tanned","Yellow","Pale","Light","Brown","DarkBrown","Black"
            };
            var skin = RandomFromList(skinColor);

            //https://avataaars.io/?avatarStyle=Circle&topType=ShortHairTheCaesar&accessoriesType=Round&hairColor=BrownDark&facialHairType=Blank&facialHairColor=Auburn&clotheType=ShirtCrewNeck&clotheColor=PastelOrange&eyeType=Side&eyebrowType=SadConcernedNatural&mouthType=Concerned&skinColor=DarkBrown'
            return $"https://avataaars.io/?avatarStyle=Circle" +
                $"&topType={top}" +
                $"&accessoriesType={accessory}" +
                $"&hairColor={hairColor}" +
                $"&facialHairType={facialHair}" +
                $"&facialHairColor={facialColor}" +
                $"&clotheType={clothingType}" +
                $"&clotheColor={clothingColor}" +
                $"&eyeType={eyes}" +
                $"&eyebrowType={eyeBrows}" +
                $"&mouthType={mouth}" +
                $"&skinColor={skin}";
        }

        private string RandomFromList(List<String> Data)
        {
            return Data.OrderBy(x => Guid.NewGuid()).FirstOrDefault();
        }

BaileyMillerSSI avatar May 17 '19 06:05 BaileyMillerSSI

Nice one @BaileyMillerSSI, I would try to implement this in Kotlin and probably build an avatar generator app with it.

ismailnurudeen avatar May 18 '19 11:05 ismailnurudeen

@ElNuru247 Good luck with it, I am going to be using these avataaars on a website I am writing. I want the users to get a random one at the start and then later can update in real time their specific features. But that is way later down the road for now it is just a nice way of displaying an avatar even if it is random right now.

BaileyMillerSSI avatar May 23 '19 13:05 BaileyMillerSSI

https://www.npmjs.com/package/a-avataaar is a web component I created for generating avatars based on a given string. You can generate stable images for e.g dummy users and you do not have to rely on avataaars.io which sometimes seems to be down. Use as e.g. <a-avataaar identifier='John Doe'></a-avataaar>

Artur- avatar Sep 04 '19 08:09 Artur-

Just to help anyone else along here's all the current possible options as JSON data / arrays. Might save a little bit of time.

{
    "avatar-style": [
        "Circle",
        "Transparent"
    ],
    "topType" : [
        "NoHair",
        "Eyepatch",
        "Hat",
        "Hijab",
        "Turban",
        "WinterHat1",
        "WinterHat2",
        "WinterHat3",
        "WinterHat4",
        "LongHairBigHair",
        "LongHairBob",
        "LongHairBun",
        "LongHairCurly",
        "LongHairCurvy",
        "LongHairDreads",
        "LongHairFrida",
        "LongHairFro",
        "LongHairFroBand",
        "LongHairNotTooLong",
        "LongHairShavedSides",
        "LongHairMiaWallace",
        "LongHairStraight",
        "LongHairStraight2",
        "LongHairStraightStrand",
        "ShortHairDreads01",
        "ShortHairDreads02",
        "ShortHairFrizzle",
        "ShortHairShaggyMullet",
        "ShortHairShortCurly",
        "ShortHairShortFlat",
        "ShortHairShortRound",
        "ShortHairShortWaved",
        "ShortHairSides",
        "ShortHairTheCaesar",
        "ShortHairTheCaesarSidePart"
    ],
    "accessoriesType": [
        "Blank",
        "Kurt",
        "Prescription01",
        "Prescription02",
        "Round",
        "Sunglasses",
        "Wayfarers"
    ],

    "hairColor": [
        "Auburn",
        "Black",
        "Blonde",
        "BlondeGolden",
        "Brown",
        "BrownDark",
        "PastelPink",
        "Platinum",
        "Red",
        "SilverGray"
    ],
    "facialHairType": [
        "Blank",
        "BeardMedium",
        "BeardLight",
        "BeardMagestic",
        "MoustacheFancy",
        "MoustacheMagnum"
    ],
    "clotheType": [
        "BlazerShirt",
        "BlazerSweater",
        "CollarSweater",
        "GraphicShirt",
        "Hoodie",
        "Overall",
        "ShirtCrewNeck",
        "ShirtScoopNeck",
        "ShirtVNeck"
    ],
    "eyeType": [
        "Close",
        "Cry",
        "Default",
        "Dizzy",
        "EyeRoll",
        "Happy",
        "Hearts",
        "Side",
        "Squint",
        "Surprised",
        "Wink",
        "WinkWacky"
    ],
    "eyebrowType": [
        "Angry",
        "AngryNatural",
        "Default",
        "DefaultNatural",
        "FlatNatural",
        "RaisedExcited",
        "RaisedExcitedNatural",
        "SadConcerned",
        "SadConcernedNatural",
        "UnibrowNatural",
        "UpDown",
        "UpDownNatural"
    ],
    "mouthType": [
        "Concerned",
        "Default",
        "Disbelief",
        "Eating",
        "Grimace",
        "Sad",
        "ScreamOpen",
        "Serious",
        "Smile",
        "Tongue",
        "Twinkle",
        "Vomit"
    ],
    "skinColor": [
        "Tanned",
        "Yellow",
        "Pale",
        "Light",
        "Brown",
        "DarkBrown",
        "Black"
    ]
}

benjibee avatar Dec 02 '20 12:12 benjibee

@benjibee's post is very helpful, but note that it is incomplete. I believe the subcategories are missing, such as "graphic" for "GraphicShirt" and "ClotheFabric". Anyone knows an official list somewhere in the source code?

msawired avatar May 17 '21 14:05 msawired

Almost complete list of components

/* eslint-disable quotes */
const data = {
  avatarStyle: ["Circle", "Transparent"],
  accessoriesType: [
    "Blank",
    "Kurt",
    "Prescription01",
    "Prescription02",
    "Round",
    "Sunglasses",
    "Wayfarers",
  ],

  hairColorCode: [
    "#A55727",
    "#000000",
    "#B58142",
    "#D6B370",
    "#714232",
    "#4A322B",
    "#F59797",
    "#ECDCBF",
    "#C93200",
    "#E8E1E1",
  ],
  hairColor: [
    "Auburn",
    "Black",
    "Blonde",
    "BlondeGolden",
    "Brown",
    "BrownDark",
    "PastelPink",
    "Platinum",
    "Red",
    "SilverGray",
  ],
  clotheColor: [
    "Black",
    "Blue01",
    "Blue02",
    "Blue03",
    "Gray01",
    "Gray02",
    "Heather",
    "PastelBlue",
    "PastelGreen",
    "PastelOrange",
    "PastelRed",
    "PastelYellow",
    "Pink",
    "Red",
    "White",
  ],
  clotheColorCode: [
    "#262E33",
    "#65C9FF",
    "#5199E4",
    "#25557C",
    "#E6E6E6",
    "#929598",
    "#3C4F5C",
    "#B1E2FF",
    "#A7FFC4",
    "#FFDEB5",
    "#FFAFB9",
    "#FFFFB1",
    "#FF488E",
    "#FF5C5C",
    "#FFFFFF",
  ],

  facialHairType: [
    "Blank",
    "BeardMedium",
    "BeardLight",
    "BeardMagestic",
    "MoustacheFancy",
    "MoustacheMagnum",
  ],
  clotheType: [
    "BlazerShirt",
    "BlazerSweater",
    "CollarSweater",
    "GraphicShirt",
    "Hoodie",
    "Overall",
    "ShirtCrewNeck",
    "ShirtScoopNeck",
    "ShirtVNeck",
  ],
  eyeType: [
    "Close",
    "Cry",
    "Default",
    "Dizzy",
    "EyeRoll",
    "Happy",
    "Hearts",
    "Side",
    "Squint",
    "Surprised",
    "Wink",
    "WinkWacky",
  ],
  eyebrowType: [
    "Angry",
    "AngryNatural",
    "Default",
    "DefaultNatural",
    "FlatNatural",
    "RaisedExcited",
    "RaisedExcitedNatural",
    "SadConcerned",
    "SadConcernedNatural",
    "UnibrowNatural",
    "UpDown",
    "UpDownNatural",
  ],
  mouthType: [
    "Concerned",
    "Default",
    "Disbelief",
    "Eating",
    "Grimace",
    "Sad",
    "ScreamOpen",
    "Serious",
    "Smile",
    "Tongue",
    "Twinkle",
    "Vomit",
  ],
  skinColor: [
    "Tanned",
    "Yellow",
    "Pale",
    "Light",
    "Brown",
    "DarkBrown",
    "Black",
  ],
  topType: [
    "NoHair",
    "Eyepatch",
    "Hat",
    "Hijab",
    "Turban",
    "WinterHat1",
    "WinterHat2",
    "WinterHat3",
    "WinterHat4",
    "LongHairBigHair",
    "LongHairBob",
    "LongHairBun",
    "LongHairCurly",
    "LongHairCurvy",
    "LongHairDreads",
    "LongHairFrida",
    "LongHairFro",
    "LongHairFroBand",
    "LongHairNotTooLong",
    "LongHairShavedSides",
    "LongHairMiaWallace",
    "LongHairStraight",
    "LongHairStraight2",
    "LongHairStraightStrand",
    "ShortHairDreads01",
    "ShortHairDreads02",
    "ShortHairFrizzle",
    "ShortHairShaggyMullet",
    "ShortHairShortCurly",
    "ShortHairShortFlat",
    "ShortHairShortRound",
    "ShortHairShortWaved",
    "ShortHairSides",
    "ShortHairTheCaesar",
    "ShortHairTheCaesarSidePart",
  ],
};

export default data;

AzadKshitij avatar Jul 13 '21 14:07 AzadKshitij

Hello, I'm quite a noob at FE because I'm mostly a BE dev, I can retrieve the image and put it in my tag by using the url, but I can only do this by using the domsanitizer.trustResourceUrl-method. Is there anyway to retrieve it using the url and instantly change it to the appropriate base64 string, so it can be send to BE and saved? Everything I've tried so far (4 days and counting) is giving me a CORS error (I only want to use URL when user changes his/her profile and retrieve the rest from the DB) the frontend I'm using is Angular, and I'm referring to base64 the img as svg itself, not base64 the url

MaximVerb avatar Aug 16 '22 09:08 MaximVerb