PHP根据昵称或者姓名自动生成文字头像(图片)的方法
发表于:2022-11-05 00:05:23浏览:3729次
在做勾股OA系统的时候访客用户给一个默认头像比较合适,添加用户,或者用户注册成功之后,根据用户名或者姓名的首个字符生成默认的头像,支持生成中文、英文的首字头像。如图:
代码如下:
/**
* 生成默认头像 ay
* @param $text
* @return false|string
*/
public static function createAvatar($text = "阿"){
$randBg = [
['31','38','35'],
['199','210','212'],
['34','162','195'],
['27','167','132'],
['236','43','36'],
['222','118','34']
];
$bg = $randBg[ array_rand($randBg)]; //随机获取背景
$image = imagecreate(200,200); //创建画布
$color = imagecolorallocate($image,$bg[0],$bg[1],$bg[2]); //为画布分配颜色
imagefilledrectangle($image, 0, 0, 199, 199, $color); //填充颜色到背景
$fontSize = 90; //字体大小
$font_file = public_path('static/common/fonts')."FZDeSHJW_506L.TTF"; //字体文件 * 修改成自己的字体路径
$pos = ImageTTFBBox($fontSize,0,$font_file,$text);// 计算字符的宽高 获得字体初始的8个相对位置
// 居中公式 (画布宽 - 字体的宽度)/ 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]));
$color2 = imagecolorallocate($image,255,255,255); //为字体分配颜色
imagefttext($image,$fontSize,0,$left_x,$left_y,$color2,$font_file,$text); //填充文案到画布里
$fileName = 'Avatar_'.time().'.png'; //文件名称,避免重复生成
$localFilePath = public_path('static/tmp/avatar').$fileName;//本地存储路径 * 修改成自己存放文件的路径
imagepng($image,$localFilePath);//生成图像并保持本地
if(file_exists($localFilePath)){
return '/static/tmp/avatar/'.$fileName;
}else{
return null;
}
}
推荐文章
- 主流“OpenClaw养虾”产品全解析:腾讯、字节、阿里、百度、小米、智谱、Kimi,哪只“虾”最适合你?
- 在PHP中判断文件是否被修改过
- 利用微软的Office Online实现Office文档在线预览功能
- 推荐:腾讯开源的Markdown编辑器,轻量简洁、易扩展,开箱即用
- notepad++ 正则表达式替换常用方法
- 企业数字化、信息化是发展的必然趋势,常见的企业信息化、数字化系统有哪些?
- PHP8出来也已经有一段时间了 说说PHP8的新特性
- CRM系统中的线索、商机、联系人、客户分别是什么,它们之间的关系是如何转换的?
- 码农——新生代农民工,实锤了
- ThinkPHP6的前置中间件和后置中间件的区别,中间件解决跨域问题的方案

