php生成字母头像,php-initial-avatar-generator

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.

php-initial-avatar-generator.jpg

php-initial-avatar-generator.svg?style=flat-square

php-initial-avatar-generator.svg?style=flat-square

shield?branch=master

php-initial-avatar-generator.svg?style=flat-square

php-initial-avatar-generator.svg?style=flat-square

php-initial-avatar-generator.svg?style=flat-square

Backers

Thank you to all our backers! 🙏 [Become a backer]

backers.svg?width=890

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

avatar.svg

avatar.svg

avatar.svg

avatar.svg

81104094f73b10d0af6a5a0da3fe4997.png

ff4d686d00f6080297796d7fa973ce79.png

ddf15ae5a1e33f6e48963647bde985ca.png

6206ea50debbabfced674831dab86deb.png

3642bb48bd34e05e9f24d0518b054c67.png

2acd053e83d6f66b722a5a2353a18f8c.png

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):

url-for-avatar-generation

Will yield:

91d1f4f61e3241da1d67186b87a49181.png

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

Thai

Tibetan

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值