• Stars
    star
    1,791
  • Rank 25,940 (Top 0.6 %)
  • Language
    PHP
  • License
    MIT License
  • Created about 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

laravolt/avatar

Total Downloads Monthly Downloads Run Tests Coverage Status

Preview

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

Preview

Preview

Installation

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

Read more about integration with PHP project here.

Laravel >= 5.2:

composer require laravolt/avatar

Laravel 5.1:

composer require laravolt/avatar ~0.3

Service Provider & Facade

Note: only for Laravel 5.4 and below, because since Laravel 5.5 we use package auto-discovery.

Laravolt\Avatar\ServiceProvider::class,

...

'Avatar'    => Laravolt\Avatar\Facade::class,

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('[email protected]')->toGravatar();
// Output: http://gravatar.com/avatar/0dcae7d6d76f9a3b14588e9671c45879

Avatar::create('[email protected]')->toGravatar(['d' => 'identicon', 'r' => 'pg', 's' => 100]);
// Output: http://gravatar.com/avatar/0dcae7d6d76f9a3b14588e9671c45879?d=identicon&r=pg&s=100

Gravatar parameter reference: https://en.gravatar.com/site/implement/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();

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"

Donate Via PayPal

paypal

Traktir Saya

Trakteer Saya

More Repositories

1

indonesia

Package Laravel yang berisi data Provinsi, Kabupaten/Kota, dan Kecamatan/Desa di seluruh Indonesia.
PHP
498
star
2

laravolt

Main repository for Laravolt Platform. Open for ISSUES and PULL REQUESTS.
JavaScript
54
star
3

semantic-form

[READ ONLY] Semantic-UI form helper
PHP
51
star
4

metabase

Embed metabase dashboard and question in your application
PHP
24
star
5

auth

Laravel auth extended
PHP
13
star
6

camunda

Convenience Laravel HTTP client wrapper to interact with Camunda REST API.
PHP
12
star
7

mural

Ready to use comment widget for your Laravel application. Support Semantic UI theme by default.
PHP
10
star
8

packer

Laravel package generator
PHP
9
star
9

acl

Simple Access Control List (ACL) management for Laravel
PHP
8
star
10

eloquent-uuid

Universally Unique Identifier (UUID) for Laravel Eloquent
PHP
8
star
11

suitable

[READ ONLY] Semantic UI Table Builder
PHP
8
star
12

laravolt-project

Application skeleton powered by Laravolt
PHP
8
star
13

votee

Like dislike for any content. Built for Laravel.
PHP
8
star
14

thunderclap

[READ ONLY] CRUD Generator
PHP
6
star
15

password

Laravel password extended
PHP
4
star
16

ui

Admin template for laravolt based application
JavaScript
4
star
17

trail

Revision history for any Eloquent object
PHP
3
star
18

habit

The Laravolt Habit untuk panduan sehari-hari kodinganmu
2
star
19

base

Base application skeleton for Laravel
PHP
2
star
20

hologram

Laravel activity log viewer
PHP
2
star
21

support

[READ ONLY] Laravolt support
PHP
2
star
22

epicentrum

Epic Central User Management for Laravel
PHP
2
star
23

laravolt.github.io

Blade
2
star
24

comma

[READ ONLY] Content management for Laravolt Platform
PHP
2
star
25

crud

Instant CRUD: pagination, searching, filtering, sorting, auto validation rules, and more
PHP
2
star
26

etalase

Sample UI for Laravolt application
HTML
1
star
27

workflow

[READ ONLY] This package is used to connect Laravolt with Camunda BPMN to make it easier
PHP
1
star
28

awesome-project-resources

1
star
29

star

sip
PHP
1
star
30

menu

[READ ONLY] Menu builder with additional admin panel
PHP
1
star
31

platform

[READ ONLY] Laravolt core platform
CSS
1
star
32

onlyoffice

Blade component to embed ONLYOFFICE document
PHP
1
star
33

lingua

Laravel translation editor
1
star
34

email

Simple email management for Eloquent user object
PHP
1
star
35

indonesia-logo

PHP
1
star
36

senarai

Add your item to list
PHP
1
star
37

mailkeeper

[READ ONLY] Save mail to database for further use
PHP
1
star
38

epilog

[READ ONLY] Epic Laravel log viewer
PHP
1
star
39

playground

Play is the highest form or research.
PHP
1
star