laravolt/avatar
Composer 安装命令:
composer require laravolt/avatar
包简介
Turn name, email, and any other string into initial-based avatar or gravatar.
README 文档
README
Display unique avatar for any user based on their (initials) name.
Preview
🎞️ Video Tutorial
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('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
Donate Via PayPal
Traktir Saya
laravolt/avatar 适用场景与选型建议
laravolt/avatar 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.82M 次下载、GitHub Stars 达 1.98k, 最近一次更新时间为 2015 年 10 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「gravatar」 「laravel」 「avatar」 「laravolt」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 laravolt/avatar 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 laravolt/avatar 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 laravolt/avatar 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A library providing easy gravatar integration/generation (Laravel supported).
Generate an Adorable Avatar for Laravel
Library to validate and parse social media profile URLs
Change the default avatar url provider with one for inline SVGs
Avatar extension for Contao Open Source CMS
This Twig extension generates user avatar using name initials letter inside Twig templates
统计信息
- 总下载量: 5.82M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2008
- 点击次数: 37
- 依赖项目数: 40
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-10-12

