allenjb/initial-avatar-generator

一个用于生成带有首字母的 PHP 头像的软件包

dev-master 2023-01-04 09:29 UTC

This package is auto-updated.

Last update: 2024-09-04 13:02:19 UTC


README

Fork自 lasserafn/php-initial-avatar-generator,更新为使用Imagine,解决与 PHP 8.1 相关的问题

此库基本上可以作为大多数用户的直接替换,以下是一些显著的更改

  • 此库使用严格定义的类型
  • 此库返回 Imagine 对象作为(非 SVG)生成的头像
  • 移除了文件中的字体编号
  • 移除了 AutoFont 功能 - 您可以使用 lasserafn/php-string-script-language 包自行实现此功能
  • 软件包仅附带默认的 Open Sans Regular 字体
  • 不再将 FontAwesome 文件与库一起分发

安装

您只需使用 composer 进行要求,然后就可以开始了!

composer require allenjb/initial-avatar-generator

用法

与安装一样,使用方法非常简单。生成图像是通过运行以下命令完成的

$avatar = new AllenJB\InitialAvatarGenerator\InitialAvatar();

$image = $avatar->name('Lasse Rafn')->generate();

就是这样!该方法将返回一个 Imagine 的 ImageInterface 实例,因此您可以保存或输出图像

return $image->show('png');

如果只传递一个单词,则使用前两个字母。如果传递了超过两个单词,则使用第一个和最后一个单词的首字母。

SVG 生成

$avatar = new AllenJB\InitialAvatarGenerator\InitialAvatar();

echo $avatar->name('Lasse Rafn')->generateSvg()->toXMLString(); // returns SVG XML string

支持的方法和参数

名称(首字母)- 默认:JD

$image = $avatar->name('Albert Magnum')->generate();

宽度 - 默认:48

// will be 96 pixels wide.
$image = $avatar->width(96)->generate();

高度 - 默认:48

// will be 96 pixels tall.
$image = $avatar->height(96)->generate();

大小 - 默认:48($avatar->width(X)->height(X) 的代理)

// will be 96x96 pixels.
$image = $avatar->size(96)->generate();

背景颜色 - 默认:#f0e9e9

// will be red
$image = $avatar->background('#ff0000')->generate();

字体颜色 - 默认:#8b5d5d

// will be red
$image = $avatar->color('#ff0000')->generate();

字体文件 - 默认:/fonts/OpenSans-Regular.ttf

// will be Semibold
$image = $avatar->font('/path/to/fonts/OpenSans-Semibold.ttf')->generate();

字体名称(用于 SVG)- 默认:Open Sans, sans-serif

$image = $avatar->fontName('Arial, Helvetica, sans-serif')->generate();

长度 - 默认:2

$image = $avatar->name('John Doe Johnson')->length(3)->generate(); // 3 letters = JDJ

切换驱动程序 - 默认:gd

$image = $avatar->gd()->generate(); // Uses GD driver
$image = $avatar->imagick()->generate(); // Uses Imagick driver

圆形 - 默认:false

$image = $avatar->rounded()->generate();

平滑 - 默认:false

通过调整大小技巧使圆形更平滑。可能会更慢。

$image = $avatar->rounded()->smooth()->generate();

或者可以考虑使用 CSS。

字体大小 - 默认:0.5

$image = $avatar->fontSize(0.25)->generate(); // Font will be 25% of image size.

如果图像大小为 50px,字体大小为 0.5,则字体大小将为 25px。

组合所有这些

return $avatar->name('Lasse Rafn')
              ->length(2)
              ->fontSize(0.5)
              ->size(96) // 48 * 2
              ->background('#8BC34A')
              ->color('#fff')
              ->generate()
              ->save('png');

现在,使用它创建一个图像(大小为 48x48 像素的视网膜图像)

<img src="url-for-avatar-generation" width="48" height="48" style="border-radius: 100%" />

将得到

Result

圆形以获得外观;实际的头像是填充的方形

图标字体支持

首先,您需要“找到”您要插入的符号的相应 unicode。例如,使用 FontAwesome,要显示典型的“用户”图标,请使用 unicode:f007。您通常可以在图标字体浏览器上找到 unicode 字符(代码)。

渲染红色头像并带有白色“用户”符号的示例如下

// note that this code
// 1) uses glyph() instead of name
// 2) changes the font to FontAwesome!
return $avatar->glyph('f007')
              ->font('/path/to/fonts/FontAwesome5Free-Regular-400.otf')
              ->color('#fff')
              ->background('#ff0000')
              ->generate()
              ->save('png');