lasserafn/php-initial-avatar-generator

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

4.3 2023-07-26 19:17 UTC

README

你有没有看到过那些几乎无处不在的带有你首字母的头像(比如我的就是LR;Lasse Rafn)——这个包允许你以简单的方式生成这样的头像。

Banner

Build Status OtterWise Coverage StyleCI Status Total Downloads Latest Stable Version License

支持者

感谢所有支持者!🙏 [成为支持者]

赞助商

通过成为赞助商来支持此项目。您的标志将在此处显示,并链接到您的网站。 [成为赞助商]

还有你也可以使用这个api: https://ui-avatars.com

安装

你只需要使用composer,然后你就可以开始了!

composer require lasserafn/php-initial-avatar-generator

这个包名听起来有点奇怪,对吧?抱歉,我对名字不太擅长。

使用方法

和安装一样,使用也非常简单。通过运行

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

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

就是这样!这个方法将返回一个来自 Intervention图像 的实例,你可以流式传输、下载甚至编码图像

return $image->stream('png', 100);

你还可以直接传递首字母,它将使用这些首字母。如果你只包括一个名字,它将使用该名字的前两个字母。

SVG生成

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

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

支持的方法和参数

当然,传递一个名字并不是这个可爱的小东西能做的唯一事情!

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

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

自动字体 - 默认:false

将检测语言脚本(使用 lasserafn/php-string-script-language)并使用支持它的字体。

$image = $avatar->autoFont()->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();

自动颜色

// Will choose a background color based on `name` and a contrasting font color. The color for a specific name will always be the same.
$image = $avatar->autoColor()->generate();

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

包含两种字体和两种变体的两个字体

  • /fonts/OpenSans-Regular.ttf
  • /fonts/OpenSans-Semibold.ttf
  • /fonts/NotoSans-Bold.ttf
  • /fonts/NotoSans-Regular.ttf

该方法将寻找字体,如果没有找到,它将追加 __DIR__ 并再次尝试,如果没有找到,它将默认为第一个GD内部字体。如果你输入一个介于1到5之间的整数,它将使用相应编号的GD内部字体。

// will be Semibold
$image = $avatar->font('/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();

如果你打算使用 rounded(),你想要使用 smooth() 来避免像素化边缘。默认禁用,因为它 COULD 会更慢。我建议只使用CSS进行圆形处理。

字体大小 - 默认:0.5

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

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

将所有这些组合在一起

在这个例子中,我们将不会使用 -> font() 方法;因为我更喜欢常规的方法。

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

现在,在一个图像中使用它(尺寸为48x48像素,用于视网膜显示)

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

将会得到

Result

圆角以供外观;实际的头像是实心正方形

Font Awesome 支持

该软件包支持Font Awesome(v5)并已将免费版本以otf格式分发(参见/fonts文件夹)。

然而,当使用Font Awesome时,您可能希望显示一个特定的图标而不是用户的首字母缩写。因此,该软件包提供了一个方便的glyph($code)方法,可以与Font Awesome一起使用。

首先,您需要“找到”您想插入的图标的相应unicode。例如,您可能想显示一个典型的“用户”图标(unicode:f007)。unicode位于图标名称附近(例如,请参阅以下示例中的用户图标:https://fontawesome.com/icons/user )。

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

// 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);

要求

  • PHP +7.0
  • Fileinfo 扩展(来自 intervention/image)

脚本/语言支持

默认字体文件不支持某些字母,因此我添加了一些字体以添加支持。您必须使用autoFont()来启用此功能。支持的语言包括

  • 阿拉伯语
  • 亚美尼亚语
  • 孟加拉语
  • 格鲁吉亚语
  • 希伯来语
  • 蒙古语
  • 中文
  • 泰语
  • 藏语

贡献者

开源最好是在社区的支持下。任何形式的贡献都非常受赞赏。

支持的图像库(来自 intervention/image)

  • GD 库(>=2.0)
  • Imagick PHP 扩展(>=6.5.7)