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的Image实例,因此你可以流式传输、下载甚至编码图片

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

AutoFont - 默认: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() 来避免像素化边缘。默认禁用,因为它可能会慢一些。我建议您只使用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 支持

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

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

首先,您需要“找到”您想插入的图形的相应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)