当前位置: 首页 > news >正文

Java实现根据姓名生成头像(钉钉样式)

头像生成器代码如下:

package com.hua.util;import org.apache.commons.lang3.StringUtils;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import java.util.UUID;/*** @author: zhengzhonghua* @date: 2023/3/16 13:23* @description: 头像生成器*/
public class HeadGeneration {/*** @author: zhengzhonghua* @date: 2023/3/16 13:24* @description: 头像生成* @param name 用户名称* @return 访问图片的路径 localhost:8082/img/*/public static String generateImg(String name) throws IOException {int nameLen = name.length();//定义最后在图片上显示的姓名String nameWritten;if (nameLen <= 2) {nameWritten = name;} else {//如果用户姓名大于三位,截取后两位nameWritten = StringUtils.right(name, 2);}String uuid = UUID.randomUUID().toString().replace("-","");//文件名(路径+uuid+.jpg)String fileName = Const.HEAD_IMAGE_URL + uuid+".jpg";File file = new File(fileName);//生成图片BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);Graphics2D g2 = (Graphics2D) bi.getGraphics();g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);g2.setBackground(getRandomColor());g2.clearRect(0, 0, 100, 100);g2.setPaint(Color.WHITE);Font font = null;// 两个字及以上if (nameWritten.length() >= 2) {font = new Font("微软雅黑", Font.PLAIN, 30);g2.setFont(font);g2.drawString(nameWritten, 20, 60);}// 一个字if (nameWritten.length() == 1) {// 中文font = new Font("微软雅黑", Font.PLAIN, 50);g2.setFont(font);g2.drawString(nameWritten, 25, 70);}//图片做圆角处理BufferedImage rounded = makeRoundedCorner(bi, Const.HEAD_IMAGE_Radius);ImageIO.write(rounded, "png", file);return Const.serverUrl+uuid+".jpg";}/*** @author: zhengzhonghua* @date: 2023/3/16 13:32* @description: 生成随机颜色*/private static Color getRandomColor() {String[] beautifulColors = new String[]{"2,168,250"};int len = beautifulColors.length;Random random = new Random();String[] color = beautifulColors[random.nextInt(len)].split(",");return new Color(Integer.parseInt(color[0]), Integer.parseInt(color[1]), Integer.parseInt(color[2]));}/*** @author: zhengzhonghua* @date: 2023/3/16 13:39* @description: 图片做圆角处理*/public static BufferedImage makeRoundedCorner(BufferedImage image, int cornerRadius) {int w = image.getWidth();int h = image.getHeight();BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);Graphics2D g2 = output.createGraphics();g2.setComposite(AlphaComposite.Src);g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);g2.setColor(Color.WHITE);g2.fill(new RoundRectangle2D.Float(0, 0, w, h, cornerRadius, cornerRadius));g2.setComposite(AlphaComposite.SrcAtop);g2.drawImage(image, 0, 0, null);g2.dispose();return output;}}

相关文章:

Java实现根据姓名生成头像(钉钉样式)

头像生成器代码如下&#xff1a; package com.hua.util;import org.apache.commons.lang3.StringUtils;import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.i…...

微信小程序备案流程

微信小程序备案流程 &#x1f4d4; 千寻简笔记介绍 千寻简笔记已开源&#xff0c;Gitee与GitHub搜索chihiro-notes&#xff0c;包含笔记源文件.md&#xff0c;以及PDF版本方便阅读&#xff0c;且是用了精美主题&#xff0c;阅读体验更佳&#xff0c;如果文章对你有帮助请帮我…...

JavaScript版本ES5/ES6及后续版本

JavaScript简史 1995&#xff1a; Brendan Eich在短短10天内创建了JavaScript的第一个版本。它被称为摩卡&#xff0c;但已经具备了现代JavaScript的许多基本特性! 1996&#xff1a; 为了吸引Java开发人员&#xff0c;Mocha先是更改为LiveScript&#xff0c;然后又更改为Ja…...

解决Idea 多模块,maven项目是多层级文件夹的子项时无法加入git管理的问题

问题 多模块项目&#xff0c;引入模块无法做git管理&#xff0c;第一个项目没有git分支标志&#xff0c;也不能像其他项目一样右键出git选项。 解决方法 发现该模块是多层级的文件夹结构&#xff0c;也就是项目本身在一个文件夹下。应该是要管理该文件夹。 Settings-Versi…...

yolo源码注释4——yolo-py

代码基于yolov5 v6.0 目录&#xff1a; yolo源码注释1——文件结构yolo源码注释2——数据集配置文件yolo源码注释3——模型配置文件yolo源码注释4——yolo-py yolo.py 用于搭建 yolov5 的网络模型&#xff0c;主要包含 3 部分&#xff1a; Detect&#xff1a;Detect 层Model…...

计算机网络中速率和带宽的区别

速率&#xff0c;指的是连接在计算机网络上的主机在数字信道上传送数据的速率&#xff0c;它也称为数据率或比特率&#xff0c;单位是bps。速率往往指的是额定速率或者标称速率&#xff0c;意思也就是在非常理想的情况下才能达到的数据传送的速率&#xff0c;然而在现实生活中是…...

MySQL数据库练习

目录 表结构 建表 插入数据 1、用SQL语句创建学生表student&#xff0c;定义主键&#xff0c;姓名不能重名&#xff0c;性别只能输入男或女&#xff0c;所在系的默认值是 “计算机”。 2、修改student 表中年龄&#xff08;age&#xff09;字段属性&#xff0c;数据类型由…...

Redis BitMap/HyperLogLog/GEO/布隆过滤器案例

面试问题&#xff1a; 抖音电商直播&#xff0c;主播介绍的商品有评论&#xff0c;1个商品对应了1系列的评论&#xff0c;排序展现取前10条记录用户在手机App上的签到打卡信息&#xff1a;1天对应1系列用户的签到记录&#xff0c;新浪微博、钉钉打卡签到&#xff0c;来没来如何…...

POI处理excel,根据XLOOKUP发现部分公式格式不支持问题

poi4不支持XLOOKUP函数&#xff0c;但poi最新的5.2.3却已经对此函数做了支持 poi下载地址&#xff1a;Index of /dist/poi/release/bin 公式源码位置&#xff1a;org/apache/poi/ss/formula/atp/XLookupFunction.java 但是在使用此函数过程中&#xff0c;发现有些XLOOKUP函数会…...

第一次PR经历

第一次PR测试地址&#xff1a;https://github.com/firstcontributions/first-contributions说明文档&#xff1a; https://github.com/firstcontributions/first-contributions/blob/main/translations/README.zh-cn.md...

背上小书包准备面试之TypeScript篇

目录 typescript是啥&#xff1f;与javascript的区别&#xff1f; typescript数据类型&#xff1f; typescript中枚举类型&#xff1f;应用场景&#xff1f; typescript中接口的理解&#xff1f;应用场景&#xff1f; typescript中泛型的理解&#xff1f;应用场景&#xf…...

【Spring】浅谈spring为什么推荐使用构造器注入

目录 一、前言 二、常见的三种注入方式 2.1 field注入 2.2 构造器注入 2.3 setter注入 三、构造器注入的好处 四、答疑 五、总结 一、前言 ​ Spring框架对Java开发的重要性不言而喻&#xff0c;其核心特性就是IOC&#xff08;Inversion of Control&#xff0c; 控制反转&…...

在阿里云Linux服务器上部署MySQL数据库流程

阿里云百科分享在阿里云Linux服务器上部署MySQL数据库流程&#xff0c;MySQL是一个关系型数据库管理系统&#xff0c;常用于LAMP和LNMP等网站场景中。本教程介绍如何在Linux系统ECS实例上安装、配置以及远程访问MySQL数据库。 目录 背景信息 Alibaba Cloud Linux 2/3、CentO…...

实战——OPenPose讲解及代码实现

一些前提 先思考下面几个问题&#xff1b; 1、什么是姿态估计&#xff1f; 参考&#xff1a;Point Detect任务&#xff0c;识别人体指定部分的关键点&#xff1b; 2、姿态估计中的难点是什么&#xff1f; 从干扰的角度&#xff0c;人体被遮挡对检测的影响很大&#xff1b;…...

专注于创意设计,为您的小程序和网站建设带来更多的可能性

随着移动互联网的快速发展&#xff0c;越来越多的企业开始关注小程序和网站建设&#xff0c;以此来拓展业务和提升品牌形象。 在这个领域中&#xff0c;创意设计扮演着关键的角色。它不仅可以帮助企业打造独特的形象和品牌&#xff0c;还能够提高用户体验和购买决策的效率。 因…...

ATF(TF-A)安全通告 TFV-6 (CVE-2017-5753, CVE-2017-5715, CVE-2017-5754)

ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-6 (CVE-2017-5753, CVE-2017-5715, CVE-2017-5754) 二、Variant 1 (CVE-2017-5753) 三、Variant 2 (CVE-2017-5715) 四、Variant 3 (CVE-2017-5754) 一、ATF(TF-A)安全通告 TFV-6 (CVE-2017-5753, CVE-2017-5715, C…...

vue3 基础语法 02

你好&#xff0c;今天过的怎么样呀&#xff0c;嘿嘿&#xff0c;加油夏 &#x1f495; 文章目录 一、模板语法 一、模板语法 React的开发模式&#xff1a; React 使用的 jsx&#xff0c;对应的代码编写的类似于js的一种语法&#xff1b;通过 Babel 将 jsx &#xff0c; 编译成…...

版本控制工具——git

版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理&#xff0c;是软件配置管理的核心思想之一。 版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。每一次文件的改变&#xff0c;文件的…...

超详细,自动化测试实战-获取配置文件信息(实例源码)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 配置文件的类型 …...

spring 2.7.14 cors 设置 allowedOrigins(“*“)通配符 失效怎么解决

失效代码&#xff1a; package com.yukuanyan.searcher_web.config;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebM…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...