美文网首页
java生成文字头像图片

java生成文字头像图片

作者: 大橙子Hi | 来源:发表于2020-01-17 13:32 被阅读0次

    我们都看到过一些网站上注册的新用户头像都是昵称的第一个字生成的图片。一下代码就是模拟这个图片的。

    
    
    /**
     * 创建头像 
     * @param drawString 要画的文字
     * @param width  图片宽度
     * @param height 图片高度
     * @param fontSize  字体大小(磅)
     * @return
     */
    public static InputStream createHeadPortrait( String drawString, String formatName,int width,int height,int fontSize){
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            try {
    
                BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    
                Graphics2D g = (Graphics2D) buffImg.getGraphics();
                //消除文字锯齿
                g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
                //消除画图锯齿
                g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,RenderingHints.VALUE_STROKE_DEFAULT);
                g.setColor(Color.orange); 
                g.fillRect(0, 0, width, height);
                // 创建字体,字体的大小应该根据图片的高度来定。
                Font font = new Font("楷体", Font.CENTER_BASELINE, fontSize);
                //字体的大小信息
                FontDesignMetrics metrics = FontDesignMetrics.getMetrics(font);
                //文字宽
                int fontWidth = metrics.stringWidth(drawString);
                //文字的高
                int fontHeight = metrics.getHeight();
                //基线(baseline)到该字体中大多数字符的升部(ascender)之间的距离
                int ascent = metrics.getAscent();
                g.setFont(font);
                g.setColor(Color.white);
                        
                //drawString的坐标指的是文字左下角的坐标
                g.drawString(drawString, width/2-fontWidth/2, height/2-fontHeight/2+ascent);
                ImageIO.write(buffImg, formatName, os);
                InputStream inputStream = new ByteArrayInputStream(os.toByteArray());
                return inputStream;
            } catch (Exception e) {
                logger.error("生成头像异常,e={}", e);
            }finally {
                try {
                    os.close();
                } catch (IOException e) {
                    logger.error("os流关闭异常");
                }
            }
    
            return null;
    
        }
    

    相关文章

      网友评论

          本文标题:java生成文字头像图片

          本文链接:https://www.haomeiwen.com/subject/xxmczctx.html