GitHub - LasseRafn/php-initial-avatar-generator: A package to generate avatars w...
source link: https://github.com/LasseRafn/php-initial-avatar-generator
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Generate avatars with initials
Ever seen those avatars (basically everywhere) that has your initials — mine would be LR; Lasse Rafn — well this package allows you to generate those, in a simple manner.
Backers
Thank you to all our backers! [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
There's also a api you can use: https://ui-avatars.com
Installation
You just require using composer and you're good to go!
composer require lasserafn/php-initial-avatar-generator
Rad, and long, package name.. huh? Sorry. I'm not very good with names.
Usage
As with installation, usage is quite simple. Generating a image is done by running:
$avatar = new LasseRafn\InitialAvatarGenerator\InitialAvatar();
$image = $avatar->name('Lasse Rafn')->generate();
Thats it! The method will return a instance of Image from Intervention so you can stream, download or even encode the image:
return $image->stream('png', 100);
You can also just pass along the initials, and it will use those. Should you just include a first name, it will use the first two letters of it.
SVG generation
$avatar = new LasseRafn\InitialAvatarGenerator\InitialAvatar();
echo $avatar->name('Lasse Rafn')->generateSvg()->toXMLString(); // returns SVG XML string
Supported methods and parameters
Of cause, passing a name is not the only thing this sweet thing does!
Name (initials) - default: JD
$image = $avatar->name('Albert Magnum')->generate();
AutoFont - default: false
Will detect language script (using lasserafn/php-string-script-language) and use a font that supports it.
$image = $avatar->autoFont()->generate();
Width - default: 48
// will be 96 pixels wide.
$image = $avatar->width(96)->generate();
Height - default: 48
// will be 96 pixels tall.
$image = $avatar->height(96)->generate();
Size - default: 48 (proxy for $avatar->width(X)->height(X)
)
// will be 96x96 pixels.
$image = $avatar->size(96)->generate();
Background color - default: #f0e9e9
// will be red
$image = $avatar->background('#ff0000')->generate();
Font color - default: #8b5d5d
// will be red
$image = $avatar->color('#ff0000')->generate();
Font file - default: /fonts/OpenSans-Regular.ttf
Two fonts with two variants are included:
- /fonts/OpenSans-Regular.ttf
- /fonts/OpenSans-Semibold.ttf
- /fonts/NotoSans-Bold.ttf
- /fonts/NotoSans-Regular.ttf
The method will look for the font, if none found it will append __DIR__
and try again, and if not it will default to the first GD Internal Font.
If you input an integer between 1 and 5, it will use a GD Internal font as per that number.
// will be Semibold
$image = $avatar->font('/fonts/OpenSans-Semibold.ttf')->generate();
Font name (for SVGs) - default: Open Sans, sans-serif
$image = $avatar->fontName('Arial, Helvetica, sans-serif')->generate();
Length - default: 2
$image = $avatar->name('John Doe Johnson')->length(3)->generate(); // 3 letters = JDJ
Switching driver - default: gd
$image = $avatar->gd()->generate(); // Uses GD driver
$image = $avatar->imagick()->generate(); // Uses Imagick driver
Rounded - default: false
$image = $avatar->rounded()->generate();
Smooth - default: false
Makes rounding smoother with a resizing hack. Could be slower.
$image = $avatar->rounded()->smooth()->generate();
If you are going to use rounded()
, you want to use smooth()
to avoid pixelated edges. Disabled by default because it COULD be slower.
I would recommend just rounding with CSS.
Font Size - default: 0.5
$image = $avatar->fontSize(0.25)->generate(); // Font will be 25% of image size.
If the Image size is 50px and fontSize is 0.5, the font size will be 25px.
Chaining it all together
We will not use the ->font() method in this example; as I like the regular one.
return $avatar->name('Lasse Rafn')
->length(2)
->fontSize(0.5)
->size(96) // 48 * 2
->background('#8BC34A')
->color('#fff')
->generate()
->stream('png', 100);
Now, using that in a image (sized 48x48 pixels for retina):
<img src="url-for-avatar-generation" width="48" height="48" style="border-radius: 100%" />
Will yield:
Rounded for appearance; the actual avatar is a filled square
Font Awesome Support
The package supports FontAwesome (v5) and already distributes the free version as otf
format (see /fonts
folder).
However, when using FontAwesome you may want to display one specific icon instead of the user's initials. This package, therefore, provides a handy glyph($code)
method to be used along with FontAwesome.
First, you need to "find" the respective unicode for the glyph you want to insert. For example, you may want to display a typical "user" icon (unicode: f007
). The unicode is located near the name of the icon (e.g., see here the user icon as an example here: https://fontawesome.com/icons/user ).
An example for rendering a red avatar with a white "user" glyph would look like this:
// note that we
// 1) use glyph() instead of name
// 2) change the font to FontAwesome!
return $avatar->glyph('f007')
->font('/fonts/FontAwesome5Free-Regular-400.otf')
->color('#fff')
->background('#ff0000')
->generate()
->stream('png', 100);
Requirements
- PHP +7.0
- Fileinfo Extension (from intervention/image)
Script/Language support
Some letters are not supported by the default font files, so I added some fonts to add support. You must use autoFont()
to enable this feature. Supported are:
- Arabic
- Armenian
- Bengali
- Georgian
- Hebrew
- Mongolian
- Chinese
- Tibetan
Contributors
Open Source is best when supported by a community. Any size of contribution is very appreciated.
Supported Image Libraries (from intervention/image)
- GD Library (>=2.0)
- Imagick PHP extension (>=6.5.7)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK