首页 > 解决方案 > 生成带有用户名字和姓氏首字母的文本的图像

问题描述

我希望每个用户在注册时都有一个默认的个人资料图片。此图像将具有其名字和姓氏的首字母。

我用单一颜色制作了一张普通图像,然后尝试使用 Intervention Image 在其上写文字。它可以工作,但是字体太小我无法增加它。我不知道干预中的最大字体大小是多少,因为文档没有说明它。我还尝试了不同的字体,将字体放在字体文件夹中,然后将其引用到$font->file('font/Poppins.ttf'). 它抛出一个错误'Undefined Offset'

注册控制器.php

protected function create(array $data)
{
    $img = Image::make('storage/avatars/1.jpg');
    $img->text('HW', 125, 80, function ($font) {
        $font->file('font/Poppins.ttf');
        $font->size(40);
        $font->color('#fdf6e3');
        $font->align('center');
        $font->angle(45);
    });
    $filename = time().'.'.'jpg';
    $img->resize(150, 150)->save('storage/avatars/'.$filename);

    return User::create([
        'firstname' => $data['firstname'],
        'lastname' => $data['lastname'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'avatar' => $filename,
    ]);
}

我有一个只有红色作为背景的默认图像。每当一个人注册时,他必须将此图像作为默认个人资料图片,上面带有他的名字和姓氏的首字母。

标签: laravelintervention

解决方案


您没有提供 font.ttf 文件的正确路径

改变这个

$font->file('font/Poppins.ttf');

对此

 $font->file(public_path('/fonts/font.ttf'));

推荐阅读