根据文本文件转换输出图片
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。