랭킹으로 돌아가기

laravolt/avatar

PHP

Plug n play avatar, turn name, email, and any other string into beautiful avatar (or gravatar), effortless.

avatarphplaravel-packagephp-librarygravatar
스타 성장
스타
2k
포크
186
주간 성장
이슈
0
5001k1.5k
2015년 10월2019년 5월2022년 12월2026년 7월
아티팩트Packagistcomposer require laravolt/avatar
README

laravolt/avatar

Total Downloads Monthly Downloads Daily Downloads Run Tests

Preview

Display unique avatar for any user based on their (initials) name.

Preview

Preview

:film_strip: Video Tutorial

Requirements

Version PHP Laravel Intervention Image
7.x >= 8.3 10.x – 13.x ^4.0
6.x >= 8.1 10.x – 12.x ^3.0
5.x >= 8.0 9.x – 11.x ^2.0

Installation

This package originally built for Laravel, but can also be used in any PHP project.

Read more about integration with PHP project here.

composer require laravolt/avatar

The service provider and Avatar facade are registered automatically via package auto-discovery.

Publish Config (optional)

php artisan vendor:publish --provider="Laravolt\Avatar\ServiceProvider"

This will create config file located in config/laravolt/avatar.php.

Lumen Service Provider

$app->register(Laravolt\Avatar\LumenServiceProvider);

Usage

Output as base64

//this will output data-uri (base64 image data)
//something like data:image/png;base64,iVBORw0KGg....
Avatar::create('Joko Widodo')->toBase64();

//use in view
//this will display initials JW as an image
<img src="{{ Avatar::create('Joko Widodo')->toBase64() }}" />

Save as file

Avatar::create('Susilo Bambang Yudhoyono')->save('sample.png');
Avatar::create('Susilo Bambang Yudhoyono')->save('sample.jpg', 100); // quality = 100

Output as Gravatar

Avatar::create('uyab@example.net')->toGravatar();
// Output: http://gravatar.com/avatar/0c5cbf5a8762d91d930795a6107b2ce5814a6ab26e60c7ec6b75bc81c7dfe3ee

Avatar::create('uyab@example.net')->toGravatar(['d' => 'identicon', 'r' => 'pg', 's' => 100]);
// Output: http://gravatar.com/avatar/0c5cbf5a8762d91d930795a6107b2ce5814a6ab26e60c7ec6b75bc81c7dfe3ee?d=identicon&r=pg&s=100

Gravatar parameter reference: https://docs.gravatar.com/api/avatars/images/

Output as SVG

Avatar::create('Susilo Bambang Yudhoyono')->toSvg();

You may specify custom font-family for your SVG text.

<head>
    <!--Prepare custom font family, using Google Fonts-->
    <link href="https://fonts.googleapis.com/css?family=Laravolt" rel="stylesheet">

    <!--OR-->

    <!--Setup your own style-->
    <style>
    @font-face {
        font-family: Laravolt;
        src: url({{ asset('fonts/laravolt.woff')) }});
    }
    </style>
</head>
Avatar::create('Susilo Bambang Yudhoyono')->setFontFamily('Laravolt')->toSvg();

You may make the SVG responsive. This excludes the height and width attributes.

Avatar::create('Susilo Bambang Yudhoyono')->setResponsive()->toSvg();

Get underlying Intervention image object

Avatar::create('Abdul Somad')->getImageObject();

The method will return an instance of Intervention image object, so you can use it for further purposes.

Non-ASCII Character

By default, this package will try to output any initials letter as it is. If the name supplied contains any non-ASCII character (e.g. ā, Ě, ǽ) then the result will depend on which font used (see config). It the font supports characters supplied, it will successfully displayed, otherwise it will not.

Alternatively, we can convert all non-ascii to their closest ASCII counterparts. If no closest coutnerparts found, those characters are removed. Thanks to Stringy for providing such useful functions. What we need is just change one line in config/avatar.php:

    'ascii'    => true,

Configuration

<?php
/*
 * Set specific configuration variables here
 */
return [

    /*
    |--------------------------------------------------------------------------
    | Image Driver
    |--------------------------------------------------------------------------
    | Avatar use Intervention Image library to process image.
    | Meanwhile, Intervention Image supports "GD Library" and "Imagick" to process images
    | internally. You may choose one of them according to your PHP
    | configuration. By default PHP's "Imagick" implementation is used.
    |
    | Supported: "gd", "imagick"
    |
    */
    'driver'    => 'gd',

    // Initial generator class
    'generator' => \Laravolt\Avatar\Generator\DefaultGenerator::class,

    // Whether all characters supplied must be replaced with their closest ASCII counterparts
    'ascii'    => false,

    // Image shape: circle or square
    'shape' => 'circle',

    // Image width, in pixel
    'width'    => 100,

    // Image height, in pixel
    'height'   => 100,

    // Number of characters used as initials. If name consists of single word, the first N character will be used
    'chars'    => 2,

    // font size
    'fontSize' => 48,

    // convert initial letter in uppercase
    'uppercase' => false,

    // Right to Left (RTL)
    'rtl' => false,

    // Fonts used to render text.
    // If contains more than one fonts, randomly selected based on name supplied
    'fonts'    => [__DIR__.'/../fonts/OpenSans-Bold.ttf', __DIR__.'/../fonts/rockwell.ttf'],

    // List of foreground colors to be used, randomly selected based on name supplied
    'foregrounds'   => [
        '#FFFFFF',
    ],

    // List of background colors to be used, randomly selected based on name supplied
    'backgrounds'   => [
        '#f44336',
        '#E91E63',
        '#9C27B0',
        '#673AB7',
        '#3F51B5',
        '#2196F3',
        '#03A9F4',
        '#00BCD4',
        '#009688',
        '#4CAF50',
        '#8BC34A',
        '#CDDC39',
        '#FFC107',
        '#FF9800',
        '#FF5722',
    ],

    'border'    => [
        'size'  => 1,

        // border color, available value are:
        // 'foreground' (same as foreground color)
        // 'background' (same as background color)
        // or any valid hex ('#aabbcc')
        'color' => 'background',

        // border radius, only works for SVG
        'radius' => 0,
    ],

    // List of theme name to be used when rendering avatar
    // Possible values are:
    // 1. Theme name as string: 'colorful'
    // 2. Or array of string name: ['grayscale-light', 'grayscale-dark']
    // 3. Or wildcard "*" to use all defined themes
    'theme' => ['*'],

    // Predefined themes
    // Available theme attributes are:
    // shape, chars, backgrounds, foregrounds, fonts, fontSize, width, height, ascii, uppercase, and border.
    'themes' => [
        'grayscale-light' => [
            'backgrounds' => ['#edf2f7', '#e2e8f0', '#cbd5e0'],
            'foregrounds' => ['#a0aec0'],
        ],
        'grayscale-dark' => [
            'backgrounds' => ['#2d3748', '#4a5568', '#718096'],
            'foregrounds' => ['#e2e8f0'],
        ],
        'colorful' => [
            'backgrounds' => [
                '#f44336',
                '#E91E63',
                '#9C27B0',
                '#673AB7',
                '#3F51B5',
                '#2196F3',
                '#03A9F4',
                '#00BCD4',
                '#009688',
                '#4CAF50',
                '#8BC34A',
                '#CDDC39',
                '#FFC107',
                '#FF9800',
                '#FF5722',
            ],
            'foregrounds' => ['#FFFFFF'],
        ],
    ]
];

Overriding config at runtime

We can overriding configuration at runtime by using following functions:

Avatar::create('Soekarno')->setDimension(100);//width = height = 100 pixel
Avatar::create('Soekarno')->setDimension(100, 200); // width = 100, height = 200
Avatar::create('Soekarno')->setBackground('#001122');
Avatar::create('Soekarno')->setForeground('#999999');
Avatar::create('Soekarno')->setFontSize(72);
Avatar::create('Soekarno')->setFont('/path/to/font.ttf');
Avatar::create('Soekarno')->setBorder(1, '#aabbcc'); // size = 1, color = #aabbcc
Avatar::create('Soekarno')->setBorder(1, '#aabbcc', 10); // size = 1, color = #aabbcc, border radius = 10 (only for SVG)
Avatar::create('Soekarno')->setShape('square');

// Available since 3.0.0
Avatar::create('Soekarno')->setTheme('colorful'); // set exact theme
Avatar::create('Soekarno')->setTheme(['grayscale-light', 'grayscale-dark']); // theme will be randomized from these two options

// chaining
Avatar::create('Habibie')->setDimension(50)->setFontSize(18)->toBase64();

Integration with other PHP project

// include composer autoload
require 'vendor/autoload.php';

// import the Avatar class
use Laravolt\Avatar\Avatar;

// create your first avatar
$avatar = new Avatar($config);
$avatar->create('John Doe')->toBase64();
$avatar->create('John Doe')->save('path/to/file.png', $quality = 90);

$config is just an ordinary array with same format as explained above (See Configuration).

Support Us

Buy Me A Coffee

"Buy Me A Coffee"

paypal

Traktir Saya

Trakteer Saya

관련 저장소
dicebear/dicebear

DiceBear is an avatar library for designers and developers. 🌍

VueMIT Licenseavatarpixel-art
dicebear.com
9.1k397
boringdesigners/boring-avatars

Boring avatars is an open source React library that generates custom, SVG-based avatars from any username and color palette.

TypeScriptnpmMIT Licensereactjavascript
boringavatars.com
6.3k212
Codennnn/vue-color-avatar

An online avatar generator just for fun | 一个纯前端实现的头像生成网站

VueMIT Licensevue3vite
vue-color-avatar.leoku.dev
3.8k488
Mayandev/notion-avatar

🪄 AI-powered online tool for making notion-style avatars.

TypeScriptnpmMIT Licensenotionavatar
notion-avatar.app
3.2k261
fangpenlin/avataaars-generator

Simple generator React app for avataaars

TypeScriptnpmMIT Licensereactavatar
getavataaars.com
3k387
gfriends/gfriends

媒体服务器演员头像仓库

embyjellyfin
2.8k907
mosch/react-avatar-editor

Small avatar & profile picture component. Resize and crop uploaded images using a intuitive user interface.

TypeScriptnpmMIT Licensereactavatar
react-avatar-editor.launchport.dev
2.5k380
dai-siki/vue-image-crop-upload

A beautiful vue component for image cropping and uploading. (vue图片剪裁上传组件)

JavaScriptnpmvueimage-crop
dai-siki.github.io/vue-image-crop-upload/example-2/demo.html
2.1k364
pixiv/three-vrm

Use VRM on Three.js

TypeScriptnpmMIT Licensegltfthreejs
2k174
weihaox/awesome-digital-human

Digital Human Resource: 2D/3D/4D Human Modeling, Avatar Generation & Animation, Clothed People Digitalization, Virtual Try-On, etc.

MIT Licensedigital-humanclothed-people-digitalization
github.com/weihaox/awesome-digital-human
2k173
nusu/avvvatars

Beautifully crafted unique avatar placeholder for your next react project

TypeScriptnpmMIT Licensereactplaceholder-avatars
avvvatars.com
2k87
multiavatar/Multiavatar

Multicultural Avatar Generator in JavaScript

JavaScriptnpmOtheravatar-generatoravatar-maker
multiavatar.com
1.9k181