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库生成验证码。
有不足之处欢迎留言讨论,我会不定时查看聊天室的留言信息。
文章最后有整理好的头像生成小工具。
php生成字母头像,【PHP】利用现有的PHP库生成简单而独特的头像-----单字符头像生成...相关推荐
- python生成字母图片_Python 模拟动态产生字母验证码图片功能
模拟动态产生字母验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理.这里介绍一下 Python 提供的 Pillow 模块. Pillow PIL:Python Image ...
- 前端根据文字生成字母头像
参考博客:https://mkblog.cn/1886/ 代码如下: <html><head><title>前端根据文字生成字母头像</title>&l ...
- java8 函数式编程_如何使用Java 8函数式编程生成字母序列
java8 函数式编程 我偶然发现了用户" mip"一个有趣的堆栈溢出问题 . 问题是: 我正在寻找一种生成字母序列的方法: A, B, C, ..., Z, AA, AB, AC ...
- 如何使用Java 8函数式编程生成字母序列
我偶然发现了用户" mip"一个有趣的堆栈溢出问题 . 问题是: 我正在寻找一种生成字母序列的方法: A, B, C, ..., Z, AA, AB, AC, ..., ZZ. 可 ...
- 利用ffmpeg提供的库(API)进行音频与视频的编码并生成文件
Output example.c 目录 [隐藏] 1 概述 2 音频输出 2.1 add_audio_stream 2.2 open_audio 2.3 get_audio_frame 2.4 wri ...
- php用字母数字生成用户名,请问生成字母加数字
请教生成字母加数字 有26个字母{a-Z}和10个数字{0-9} 如果要生成8位字符的,区分大小写, 这样的排列是(26+26+10)8次方=218340105584896个,这218万亿 但相邻不能 ...
- java 验证码 字母_使用java生成字母验证码
本文实例为大家分享了java生成字母验证码的具体代码,供大家参考,具体内容如下 import java.awt.BasicStroke; import java.awt.Color; import j ...
- ASCII字符代码表,python 生成字母a到z字母,生产倒序列表
ASCII码表中,每个英文字母都对应了一个数字且分大小写如下图.a对应的ASCII是97,A对应的是65,大小写之间相差32,Z则是90,z是122. 图片来源网上 接下来是如何将他们进行转换: or ...
- html怎么随机生成字母,JS简单生成由字母数字组合随机字符串示例_气质_前端开发者...
本文实例讲述了 前言 最近有个需求,是需要生成3-32位长度的字母数字组合的随机字符串,另一个是生成43位随机字符串. 方法一 奇妙的写法 Math.random().toString(36).sub ...
- python自动生成分析报告_利用PYTHON全自动生成分析报告
日常工作当中,特别是金融行业当中,有不少人的工作是提取数据,分析数据,得到可视化图表,并加入自已的研究分析结论,最终生成分析报告,并且有不少报告是定期生成,存在不少重复手工劳动.本文通过一个简单实例, ...
最新文章
- 串口服务器支持多台上位机,RS485多机通信一台上位机两台下位机问题,
- Leetcode 207. 课程表 解题思路及C++实现
- asp.net core系列 71 Web架构分层指南
- Android之解决YouTubePlayerView启动在Android5.0左右的手机出现奔溃问题
- 512抗击震灾捐款背后的思考
- 强悍的 Linux —— 强悍的 find
- 给笔记本更换SSD硬盘
- x265将yuv转h265(七)
- 面试题:逗号表达式运用
- ICCV-2021 Oral | AdaFocus:利用空间冗余性实现高效视频识别
- ideal如何用标签输出_实战|如何使用JavaScript访问设备前后摄像头
- 计算机信息检索自考知识点,计算机信息检索02139自考资料.doc
- 最坑爹的硬盘:希捷ST2000DM001
- JS:键盘事件(onkeydown 、onkeypress、 onkeyup三个)
- 最新二次开发仿包图网素材图片源码
- 自动控制原理_卢京潮_自动控制一般概念及数学模型_学习笔记
- android技术牛人的博客[转]
- Paper Notes: Cross-Domain Image Translation Based on GAN
- 【仿写网站】用swiper实现故宫博物院首页轮播图
- VSCode 和 CMake 搭建嵌入式开发环境
热门文章
- 大智慧c语言dll,易语言大智慧dll模板接口
- 快速拓展领英人脉网9大秘诀,让我们更高效的使用领英
- 液压泵优化设计matlab,基于MATLAB/Simulink的挖掘机动力匹配技术的转速传感变量系统设计...
- CAD计算机辅助设计——文件管理和界面设置
- 输入法辅助工具:自动切换输入法 for Mac
- Python--网页更新监控工具
- PCWorld:流量日趋集中 大公司影响整个互联网
- 什么叫0day和Warez?
- linux局域网连接网络打印机驱动程序,EBS on linux 网络打印机配置
- 华为数通考试正式改版,改版前后有什么区别?