新闻详情

新闻详情

首页 / 资讯中心 / 详情

PHP实现首字母(截取第一个汉字)生成头像图片

发布时间:2026/11/12 23:30:14来源:尧图网络
PHP实现首字母(截取第一个汉字)生成头像图片
会员系统中用户如果不上传自定义头像使用固定图片作为头像未免有些单调。PHP可以实现生成用户名首字母或者第一个汉字第一个字符的头像图片不使用第三方API第三方虽然图片比较多但是会有超时。设计思路定义了一个letter_avatar函数接收一个参数$text表示要生成头像的文字。使用hash函数计算出$text的哈希值并将其解包为一个无符号长整型数。将哈希值对360取余得到一个色相值$hue。使用hsv2rgb函数将色相、饱和度和亮度转换为RGB分量值。根据RGB值生成背景颜色$bg。设定文字颜色$color为白色。使用mb_strtoupper函数将$text的首字母转为大写。使用SVG语法生成一个正方形的背景和一个居中的文字。使用base64_encode函数将SVG代码转为Base64编码。将Base64编码和前缀data:image/svgxml;base64,拼接成完整的图片路径。返回生成的图片路径。 注意这段代码只是生成了一个头像图片的路径并没有将图片输出到页面中。如果要在页面中显示头像需要将生成的图片路径作为img标签的src属性值。完整代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899//1、方法调用测试letter_avatar(hello)//2、生成图片方法functionletter_avatar($text){$total unpack(L, hash(adler32,$text, true))[1];$hue$total% 360;list($r,$g,$b) hsv2rgb($hue/ 247, 0.3, 0.9);$bgrgb(247,186,11);$color#ffffff;$first mb_strtoupper(mb_substr($text, 0, 1));$srcbase64_encode(svg xmlnshttp://www.w3.org/2000/svg version1.1 height100 width100rect fill.$bg. x0 y0 width100 height100/recttext x50 y50 font-size50 text-copyfast fill.$color. text-anchormiddle text-rightsadmin dominant-baselinecentral.$first./text/svg);// 确保图片保存的路径存在$tempPath WEB_PATH .temp. DS .avatar. DS;$filename md5(avatar_. uniqid());// 生成图片链接returnbase64_to_image_url(data:image/svgxml;base64,.$src,$tempPath,$filename);}/details//3、生成https访问链接functionbase64_to_image_url($base64_string,$output_folder,$image_name){$datasubstr($base64_string,strpos($base64_string,,) 1);// 对数据进行Base64解码$fileDatabase64_decode($data);// 创建输出目录如果它不存在if(!file_exists($output_folder)) {mkdir($output_folder, 0755, true);}// 将解码后的数据保存到文件$file$output_folder.$image_name..svg;if(file_put_contents($file,$fileData)) {// 返回图片的URLreturnbase_url() .temp. DS .avatar. DS .$image_name..svg;}returnfalse;}//4、RGBfunctionhsv2rgb($h,$s,$v){$r$g$b 0;$ifloor($h* 6);$f$h* 6 -$i;$p$v* (1 -$s);$q$v* (1 -$f*$s);$t$v* (1 - (1 -$f) *$s);switch($i% 6) {case0:$r$v;$g$t;$b$p;break;case1:$r$q;$g$v;$b$p;break;case2:$r$p;$g$v;$b$t;break;case3:$r$p;$g$q;$b$v;break;case4:$r$t;$g$p;$b$v;break;case5:$r$v;$g$p;$b$q;break;}return[floor($r* 255),floor($g* 255),floor($b* 255)];}总结到此这篇关于PHP实现首字母截取第一个汉字生成头像图片的文章就介绍到这了
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉