php生成字母头像,【PHP】利用现有的PHP库生成简单而独特的头像-----单字符头像生成...

问题:

用户注册的过程中,没有上传用户头像,在一些需要使用头像的功能中缺失该模块。

使用统一的头像占位又缺乏头像的多样性,识别度非常低。

思路:

语言:PHP

php库:GD库

框架:Laravel

思路:

创建画布---------imagecreate();

填充文案到画布里---------imagefttext();

生成图像并保持本地---------imagepng();

具体代码

一、创建纯色画布

//创建画布

$image = imagecreate(200,200);

//为画布分配颜色

$color = imagecolorallocate($image,255,255,255);

//填充颜色到背景

imagefilledrectangle($image, 0, 0, 199, 199, $color);

注意事项:设置颜色的时候需要通过imagecolorallocate()为画布分配颜色

这些参数是0-255的整数或者十六进制的0x00-0xFF。

二、加载字体并计算文字的位置

//生成头像的文字

$text = "慢";

//加载字体

$font_file = public_path('tools/avatar/fonts/msyhbd.ttf');

// 计算字符的宽高 获得字体初始的8个相对位置

$pos = ImageTTFBBox(61,0,$font_file,$text);

// 居中公式 (画布宽 - 字体的宽度)/ 2 - 字体初始位置的偏移量

$left_x = intval((200 - abs($pos[2] - $pos[0])) / 2 - abs($pos[0]));

$left_y = intval((200 - abs($pos[5] - $pos[3])) / 2 + abs($pos[5]));

注意事项:字体需要自己先下载到项目中;

导入字体才能计算字体的相对位置;

字体的宽度参照获得的8个相对坐标进行计算;

三、生成图像并保持本地

//为字体分配颜色

$color2 = imagecolorallocate($image,0,0,0);

//填充文案到画布里

imagefttext($image,61,0,$left_x,$left_y,$color2,$font_file,$text);

//文件名称,避免重复生成

$fileName = 'logo_'.time().'.png';

//本地存储路径

$localFilePath = public_path('tools/avatar/img/'.$fileName);

//生成图像并保持本地

imagepng($image,$localFilePath);

注意事项:

你也可以直接再浏览器中输出图片。

在代码的开头加上一句:header('Content-Type:image/png');设置文件类型为图像;

结尾删除本地存储路径的参数imagepng($image);

四、结尾

步骤比较简单,当然也利用GD库生成验证码。

有不足之处欢迎留言讨论,我会不定时查看聊天室的留言信息。

文章最后有整理好的头像生成小工具。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值