人工智能大数据,工作效率生产力
Ctrl + D 收藏本站,更多好用AI工具
当前位置:首页 » AI资讯

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

2024-06-24 51

头像生成器代码如下:

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; } } 

原文链接:https://blog.csdn.net/qq_59212867/article/details/132176791?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171851504116800213035493%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171851504116800213035493&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-12-132176791-null-null.nonecase&utm_term=AI%E5%A4%B4%E5%83%8F

相关推荐

阅读榜

hellenandjeckett@outlook.com

加入QQ群:849112589

回顶部