生成文字图片


import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.font.FontRenderContext;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

/**
 * @author yaoyuanliang
 * @date 2018/1/19
 */
public class FontImageUtil {


    public static byte[] generateImage(String name,int width,int height,String fontName,int size){
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        try {
            // 创建BufferedImage对象
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            // 获取Graphics2D
            Graphics2D g2d = image.createGraphics();

            // ---------- 增加下面的代码使得背景透明 -----------------
            image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
            g2d.dispose();
            g2d = image.createGraphics();
            // ---------- 背景透明代码结束 -----------------

            // 画图
            g2d.setColor(new Color(255,0,0));
            g2d.setStroke(new BasicStroke(1));

            FontRenderContext context = g2d.getFontRenderContext();
            Font font= new Font(fontName,Font.BOLD,size);
            g2d.setFont(font);
            Rectangle2D bounds = font.getStringBounds(name, context);
            double x = (width - bounds.getWidth()) / 2;
            double y = (height - bounds.getHeight()) / 2;

            double ascent = -bounds.getY();
            double baseY = y + ascent;
            //绘制字符串

            g2d.drawString(name, (int)x+25, (int)baseY);
            //释放对象
            g2d.dispose();

            // 保存文件
            ImageIO.write(image, "png",out);

        } catch (IOException e) {
            e.printStackTrace();
        }
        return out.toByteArray();
    }
 @Test
    public void test_19(){
        try {
            String name="爱新觉";
            int width=280;
            int height=120;
            String fontName="薛文轩钢笔楷体";
            int size=66;

            byte[] bytes = FontImageUtil.generateImage(name, width, height, fontName, size);

            String dic = "D:\\12\\";
            String ctime = System.currentTimeMillis()+"";
            File file = new File(dic+ctime+".png");
            FileUtils.writeByteArrayToFile(file,bytes);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

猜你喜欢

转载自mutourenoo.iteye.com/blog/2408308