工具类-根据文本文件转换输出图片

根据文本文件转换输出图片

1.目标文本文件

FileToPngUtil.java

/**
 * Copyright (C), 2000-2021, XXX有限公司
 * FileName: FileToPngUtil
 * Author: wangyetao
 * Date: 21-10-30 14:37:21
 * Description: 文字转换成图片输出
 * History:
 * <author> <time> <version> <desc>
 * 作者姓名 修改时间 版本号 版本描述
 */
package simple.callback.filetopng;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @ClassName: FileToPngUtil
 * @Description: 根据文本文件转换输出图片
 * @Author: wangyetao
 * @Date: 21-10-30 14:37:21
 */
public class FileToPngUtil {

    /**
     * 根据文本文件转换输出图片
     *
     * @param filePath      文本路径
     * @param outPath       图片输出路径
     * @param font          Font字体:微软,微软雅黑,宋体,黑体,DejaVu Sans Mono
     * @param lineHeightPx  行高
     * @param width         指定图片宽度(px像素)
     * @param isDrawLineNum 是否绘制行号
     * @throws Exception
     */
    public static void createImageFromFile(String filePath, String outPath, Font font, int lineHeightPx, int width, boolean isDrawLineNum) throws Exception {
        List<String> list = new ArrayList<>();
        try (BufferedReader br = Files.newBufferedReader(Paths.get(filePath))) {
            //br returns as stream and convert it into a List
            list = br.lines().collect(Collectors.toList());
        } catch (IOException e) {
            e.printStackTrace();
        }
        int height = lineHeightPx * list.size();
        // 创建图片
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        // 获取图形上下文对象
        Graphics graphics = image.getGraphics();
        //背景色
        graphics.setColor(Color.BLACK);
        // 填充
        graphics.fillRect(0, 0, width, height);
        // 设定字体大小及样式
        graphics.setFont(font);
        // 字体颜色
        graphics.setColor(Color.WHITE);
        for (int i = 0; i < list.size(); i++) {
            // 描绘字符串
            if (isDrawLineNum) {
                graphics.drawString(i + "\t" + list.get(i), 0, 0 + (i + 1) * lineHeightPx);
            } else {
                graphics.drawString(list.get(i), 0, 0 + (i + 1) * lineHeightPx);
            }

        }
        graphics.dispose();
        graphics.dispose();
        ImageIO.write(image, "png", new File(outPath));// 输出png图片
    }

    //测试用例
    public static void main(String[] args) throws Exception {
        String prefixPath = "/home/wangyetao/IdeaProjects/psimple/src/simple/callback/filetopng/";
        String fileName = "FileToPngUtil.java";
        String pngName = "FileToPngUtil02.png";
        /*String prefixPath = "/home/wangyetao/AndroidstudioProjects/NoahsArk/app/log/file/";
        String fileName = "HaloAccessibilityServiceV5_inblog.txt";
        String pngName = "HaloAccessibilityServiceV5_inblog02.png";*/
        String inPath = prefixPath + fileName;
        String outPath = prefixPath + pngName;

        int lineHeightPx = 20;
        int width = 1300;
        createImageFromFile(inPath, outPath, new Font("微软", Font.PLAIN, 15), lineHeightPx, width, false);
    }

}

2.输出为图片

记录与总结,2021年 10月 30日 星期六 16:40:56 CST。 

猜你喜欢

转载自blog.csdn.net/u014132947/article/details/121053023