根据指定的文字生成图片(自适应大小) 工具类

package utils;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.font.FontRenderContext;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;

import javax.imageio.ImageIO;

public class StringToPicture {
       /**
        * @lqc
        * @根据指定的str去生成图片     
        */
        public static  byte[] createImage(String str,File outFile) throws Exception{
          Font font=new Font("黑体",Font.BOLD,18);
        //获取font的样式应用在str上的整个矩形
          Rectangle2D r=font.getStringBounds(str, new FontRenderContext(AffineTransform.getScaleInstance(1, 1),false,false));
        //获取单个字符的高度
          int unitHeight=(int)Math.floor(r.getHeight());
        //获取整个str用了font样式的宽度这里用四舍五入后+1保证宽度绝对能容纳这个字符串作为图片的宽度
          int width=(int)Math.round(r.getWidth())+1;
        //把单个字符的高度+3保证高度绝对能容纳字符串作为图片的高度
          int height=unitHeight+3;
        //创建图片
          BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
          Graphics g=image.getGraphics();
          g.setColor(Color.WHITE);
        //先用白色填充整张图片,也就是背景
          g.fillRect(0, 0, width, height);
        //在换成黑色
          g.setColor(Color.black);
        //设置画笔字体
          g.setFont(font);
        //画出字符串
          g.drawString(str, 0, font.getSize());
          g.dispose();

          if (outFile!=null) {
              //输出png图片到指定目录
              ImageIO.write(image, "png", outFile);
          }
          //返回数据流
          ByteArrayOutputStream out = new ByteArrayOutputStream();
          boolean flag = ImageIO.write(image, "png", out);  
          byte[] b = out.toByteArray();
          return b; 
        }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值