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

这篇具有很好参考价值的文章主要介绍了Java实现根据姓名生成头像(钉钉样式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

头像生成器代码如下:文章来源地址https://www.toymoban.com/news/detail-644862.html

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实现根据姓名生成头像(钉钉样式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java实现输入学号、姓名、年龄,并对其进行输出

    一、前言 二、代码部分 三、程序运行结果(面板弹出)  四、涉及到的知识点代码 1.本代码是我在上学时写的,有一些地方没能完美实现,请包涵也请多赐教! 2.本弹窗界面可以根据简单的要求进行输入,并显示是否正确,该文章代码设置的是在代码实现输入学号、姓名、

    2024年02月07日
    浏览(52)
  • 定义学生信息结构体,包含学生的姓名、学号、年龄、成绩等信息。 建立学生信息管理系统的主菜单,包括录入学生信息、查询学生信息、修改学生信息、删除学生信息等功能。 实现录入学生信息的功能,可以根据用户输入...

    下面是关于学生信息结构体、学生信息管理系统主菜单以及其中的功能的 C 语言实现示例: ``` #include stdio.h #include string.h #define MAX_STUDENT_NUM 1000 // 学生信息结构体 struct Student { char name[100]; // 姓名 int id; // 学号 int age; // 年龄 float score; // 成绩 }; // 学生信息数组 struct Student stu

    2024年02月04日
    浏览(51)
  • Java-根据模板生成PDF

    在有些场景下我们可能需要根据指定的模板来生成 PDF,比如说合同、收据、发票等等。因为 PDF 是不可编辑的,所以用代码直接对 PDF 文件进行修改是很不方便的,这里我是通过 itext 和 Adobe Acrobat 来实现的,以下就是具体实现方法。 Adobe Acrobat 是由 Adobe 公司开发的一款 PDF (

    2024年02月04日
    浏览(59)
  • java调用poi根据模板生成ppt

    吐槽:像这种需求半年碰不到一个 O.o 可以多去poi官网翻一下官方文档虽然很难理解但有用  所有代码基于个人习惯编写,懒得贴图了相信兄弟们的理解能力,有问题可以留言我尽量解决。 本文所有代码生成都基于pptx文件编写,可根据具体业务修改代码 1.打开模板文件 2.创建

    2024年02月21日
    浏览(52)
  • java 根据word模板生成word文件

    Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能。 下面是一个简单的示例代码,可以帮助您快速入门。 模板制作:offer,wps都行,我使用wps进行操作  第一步制作模板 CTRL+f9生成域------》鼠标右键编辑域------》选

    2024年02月14日
    浏览(49)
  • Java根据word模板生成word文档并转成PDF文件

    定义完我们的模板之后,我们要将文档保存为xml的格式 生成的xml格式看起来比较乱,没有层次感, 所以需要格式化一下 格式化 基础信息的定义 基础信息的定义只要保证我们转化成的xml文件中的${name}等格式没错误即可 表格的定义 遍历实现,表格的数据填充 在xml文件中我们的

    2024年02月09日
    浏览(62)
  • uni-app编译成钉钉小程序,uViewUI组件样式失效,自定义组件样式失效

    公司项目需要把原本用 uinapp 开发的微信小程序想要在钉钉上也能使用,然后就打算用uniapp编译成钉钉小程序,看看是否有坑,不试不知道,一试吓一跳,官方没有提供钉钉的编译方式,按照网上文章的配置编译成钉钉小程序后,初步发现, uView-ui的icon没啦 ,然后样式和布局

    2024年02月11日
    浏览(58)
  • 微信小程序canvas画图案列,实现生成头像并保存,小程序新版canvas变化,小程序中canvas注意事项

    你一定见过很多制作头像的小程序,无论是国庆的红旗,圣诞的帽子,还是疫情的口罩,都可以用小程序生成应景的头像,那么具体的代码是怎么实现的呢?前些天帮别人做了一个生成姓氏头像的功能,里面的实现原理基本一致,都是通过Canvas实现,以生成姓氏头像为例,记录一下小程序的

    2024年02月09日
    浏览(55)
  • java实现钉钉自定义机器人发送消息

           钉钉作为现在很多企业的移动办公平台,具有很多很强大的功能,可以帮助我们更加及时的发现问题,解决问题,今天我们做一个java实现钉钉自定义机器发送消息的功能。         首先,先放出官方文档地址:https://open.dingtalk.com/document/orgapp/custom-robot-access        

    2024年02月15日
    浏览(50)
  • Java 操作 Excel:生成数据、设置单元格样式、设置数据有效性(hutool)

    该篇文章,主要通过 Java 代码对 Excel 文件的常用操作,包括:生成表格、修改单元格样式、设置数据有效性。 该篇文章,在官网文献下增加个人的看法和理解,如文中有出现不符、错误或需要补充的地方,欢迎指正,非常感谢。 该篇文章操作 Excel 使用了 hutool 的工具包以及

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包