PHP实现首字母头像

<?php
$name="哈哈";
$logo=letter_avatar($name);echo '<img src="'.$logo.'" style=" border-radius: 50%;">';function letter_avatar($text)
{$total = unpack('L', hash('adler32', $text, true))[1];$hue = $total % 360;list($r, $g, $b) = hsv2rgb($hue / 360, 0.3, 0.9);$bg = "rgb({$r},{$g},{$b})";$color = "#ffffff";$first = mb_strtoupper(mb_substr($text, 0, 1));$src = base64_encode('<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="100" width="100"><rect fill="' . $bg . '" x="0" y="0" width="100" height="100"></rect><text x="50" y="50" font-size="50" text-copy="fast" fill="' . $color . '" text-anchor="middle" text-rights="admin" dominant-baseline="central">' . $first . '</text></svg>');$value = 'data:image/svg+xml;base64,' . $src;return $value;
}function hsv2rgb($h, $s, $v)
{$r = $g = $b = 0;$i = floor($h * 6);$f = $h * 6 - $i;$p = $v * (1 - $s);$q = $v * (1 - $f * $s);$t = $v * (1 - (1 - $f) * $s);switch ($i % 6) {case 0:$r = $v;$g = $t;$b = $p;break;case 1:$r = $q;$g = $v;$b = $p;break;case 2:$r = $p;$g = $v;$b = $t;break;case 3:$r = $p;$g = $q;$b = $v;break;case 4:$r = $t;$g = $p;$b = $v;break;case 5:$r = $v;$g = $p;$b = $q;break;}return [floor($r * 255),floor($g * 255),floor($b * 255)];
}

 

  1. 定义了一个letter_avatar函数,接收一个参数$text,表示要生成头像的文字。
  2. 使用hash函数计算出$text的哈希值,并将其解包为一个无符号长整型数。
  3. 将哈希值对360取余得到一个色相值$hue
  4. 使用hsv2rgb函数将色相、饱和度和亮度转换为RGB分量值。
  5. 根据RGB值生成背景颜色$bg
  6. 设定文字颜色$color为白色。
  7. 使用mb_strtoupper函数将$text的首字母转为大写。
  8. 使用SVG语法生成一个正方形的背景和一个居中的文字。
  9. 使用base64_encode函数将SVG代码转为Base64编码。
  10. 将Base64编码和前缀data:image/svg+xml;base64,拼接成完整的图片路径。
  11. 返回生成的图片路径。 注意:这段代码只是生成了一个头像图片的路径,并没有将图片输出到页面中。如果要在页面中显示头像,需要将生成的图片路径作为<img>标签的src属性值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/53103.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将word每页页眉单独设置

在进行论文排版的时候&#xff0c;总是会出现页眉的页码设置问题&#xff0c;比如出现奇数或偶数页码一致&#xff0c;尝试将前面页码改掉&#xff0c;后面再修改前面也进行了变动&#xff0c;将每页页眉单独设置&#xff1a; &#xff08;1&#xff09;在第一页的最后一行输入…

设计模式概述与UML图

文章目录 一、设计模式概述1. 软件设计模式的产生背景2. 软件设计模式的概念3. 学习设计模式的必要性4. 设计模式分类&#xff08;1&#xff09;创建型模式&#xff08;2&#xff09;结构型模式&#xff08;3&#xff09;行为型模式 二、UML图1. 类图概述2. 类图作用3. 类图表示…

视频汇聚平台EasyCVR视频广场侧边栏支持拖拽

为了提升用户体验以及让平台的操作更加符合用户使用习惯&#xff0c;我们在EasyCVR v3.3版本中&#xff0c;支持面包屑侧边栏的广场视频、分组列表、收藏这三个模块拖拽排序&#xff0c;并且该操作在视频广场、视频调阅、电子地图、录像回放等页面均能支持。 TSINGSEE青犀视频…

Linux - 进程概念(进程状态、优先级)

1.进程状态 操作系统中进程有多种状态模型 三态模型 进程状态分为 就绪态&#xff0c;执行态&#xff0c;阻塞态。 就绪(Ready)状态&#xff1a;指进程已处于准备好运行的状态&#xff0c;即进程已分配到除CPU以外的所有必要资源后&#xff0c;只要再获得CPU&#xff0c;便可立…

领先实践 | 打造现象级品牌传播的5个关键步骤

有效的 品牌传播 需要有效的传播策略&#xff0c;一个好的传播策略&#xff0c;不仅可以帮助企业的品牌传播聚焦资源&#xff0c;找到目标受众&#xff0c;投其所好地进行精准投放&#xff0c;还可以在出现问题的时候及时调整&#xff0c;使品牌传播的大方向不发生偏移。这篇文…

【剑指offer】双指针7题 全刷(详解)

目录 目录 目录 全部题目链接地址 [简单]剑指 Offer 18. 删除链表的节点 题目 方法 [简单]剑指 Offer 22. 链表中倒数第k个节点 题目 方法&#xff1a;双指针距离法 [简单]剑指 Offer 25. 合并两个排序的链表 题目 方法&#xff1a;双指针 [简单]剑指 Offer 52. 两…

Spring Boot、Spring Cloud、Spring Alibaba 版本对照关系及稳定兼容版本

Spring Boot、Spring Cloud、Spring Alibaba 版本对照关系及稳定兼容版本 引言 在 Java 生态系统中&#xff0c;Spring Boot、Spring Cloud 和 Spring Alibaba 是非常流行的框架&#xff0c;它们提供了丰富的功能和优雅的解决方案。然而&#xff0c;随着不断的发展和更新&…

.Net6 Web Core API 配置 Autofac 封装 --- 依赖注入

目录 一、NuGet 包导入 二、Autofac 封装类 三、Autofac 使用 四、案例测试 下列封装 采取程序集注入方法, 单个依赖注入, 也适用, 可<依赖注入>的地方配置 一、NuGet 包导入 Autofac Autofac.Extensions.DependencyInjection Autofac.Extras.DynamicProxy 二、Auto…

应急响应-主机后门webshell的排查思路(webshell,启动项,隐藏账户,映像劫持,rootkit后门)

0x00 windows主机后门排查思路 针对主机后门windows&#xff0c;linux&#xff0c;在对方植入webshell后&#xff0c;需要立即响应&#xff0c;排查出后门位置&#xff0c;以及排查对外连接&#xff0c;端口使用情况等等 排查对外连接状态&#xff1a; 借助工具&#xff1a;p…

【Ansible】Ansible自动化运维工具之playbook剧本搭建LNMP架构

LNMP 一、playbooks 分布式部署 LNMP1. 环境配置2. 安装 ansble3. 安装 nginx3.1 准备 nginx 相关文件3.2 编写 lnmp.yaml 的 nginx 部分3.3 测试 nginx4. 安装 mysql4.1 准备 mysql 相关文件4.2 编写 lnmp.yaml 的 mysql 部分4.3 测试 mysql5. 安装 php5.1 编写 lnmp.yaml 的 …

整理mongodb文档:collation

文章连接 整理mongodb文档:collation 看前提示 对于mongodb的collation。个人主要用的范围是在createcollection&#xff0c;以及find的时候用&#xff0c;所以本片介绍的时候也是这两个地方入手&#xff0c;对新手个人觉得理解概念就好。不要求强制性掌握&#xff0c;但是要…

服务器流量

1.服务器流量分为入流量和出流量 入流量&#xff08;Inbound Traffic&#xff09;是指流向服务器的数据流量&#xff0c;也就是客户端发送到服务器的数据。这些数据可能包括请求信息、文件上传等。 出流量&#xff08;Outbound Traffic&#xff09;是指从服务器流向客户端的数…