java 将 text 文字、文本 内容 转为 图片

参考了大神的代码,大神的分割算法很精妙,将大神的代码进行了优化,做个留存
大神博客地址:https://xunming.blog.csdn.net/article/details/91956952

更改后的功能:
1.将长文本生成长图片,不会进行分割
2.根据文本内容自动计算图片的高度,图片的宽度默认是960,每一行的高度默认是24
3.生成图片 宽度会多20px(以防最后一个字显示不全),高度会多一行(即多24px)

package com.example.demo.util;import sun.font.FontDesignMetrics;import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;import javax.imageio.ImageIO;/*** 如果一行文字长度超过了既定的宽度,那么主动执行换行操作*/
public class TextToImage {/*** 图片宽度*/private static int width = 960;/*** 每一行的高度*/private static int line_height = 24;/*** 字体*/private static Font font = new Font("宋体", Font.PLAIN, 14);public static void main(String[] args) throws Exception {String message = "这里输入你的文本,或者从文件系统中去读";String[] strArr = message.split("\n");createImage(strArr);}public static void createImage(String[] strArr) throws Exception {FontMetrics fm = FontDesignMetrics.getMetrics(font);int stringWidth = fm.charWidth('字');// 标点符号也算一个字//计算每行多少字 = 宽/每个字占用的宽度int line_string_num = width % stringWidth == 0 ? (width / stringWidth) : (width / stringWidth) + 1;System.out.println("每行字数=" + line_string_num);//将数组转为listList<String> strList = new ArrayList<>(Arrays.asList(strArr));//按照每行多少个字进行分割for (int j = 0; j < strList.size(); j++) {//当字数超过限制,就进行分割if (strList.get(j).length() > line_string_num) {//将多的那一端放入本行下一行,等待下一个循环处理strList.add(j + 1, strList.get(j).substring(line_string_num));//更新本行的内容strList.set(j, strList.get(j).substring(0, line_string_num));}}//计算图片的高度,多预留一行int image_height = strList.size() * line_height + line_height;//每张图片有多少行文字int every_line = image_height / line_height;for (int m = 0; m < 1; m++) {String filePath = "E:\\新建文件夹\\" + m + ".jpg";File outFile = new File(filePath);// 创建图片  宽度多预留一点BufferedImage image = new BufferedImage(width + 20, image_height,BufferedImage.TYPE_INT_BGR);Graphics g = image.getGraphics();g.setClip(0, 0, width + 20, image_height);g.setColor(Color.white); // 背景色白色g.fillRect(0, 0, width + 20, image_height);g.setColor(Color.black);//  字体颜色黑色g.setFont(font);// 设置画笔字体// 每张多少行,当到最后一张时判断是否填充满for (int i = 0; i < every_line; i++) {int index = i + m * every_line;if (strList.size() - 1 >= index) {//                    System.out.println("每行实际=" + newList.get(index).length());g.drawString(strList.get(index), 0, line_height * (i + 1));}}g.dispose();ImageIO.write(image, "jpg", outFile);// 输出png图片}}}

java 将 text 文字、文本 内容 转为 图片相关推荐

  1. Java如何读取文件文本内容的几种方式汇总

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 Java如何读取文件文本内容的几种方式汇总 - joshua317的博客 package com.joshua317;imp ...

  2. openlayers +vue 实现聚合点text文字显示和base64图片显示

    openlayers +vue 实现聚合点text文字显示和base64图片显示 在业务中广泛是运用 所以在这里记录下 mapListdataS是接口中传过来的值 addMarker(mapListd ...

  3. java在模板图片中填写文字,java 操作pdf模板(向指定域添加文本内容和图片)

    项目需求涉及到操作pdf模板,根据生成好的模板向里面填充数据 用到的jar包是iText-5.0.6.jar 和iTextAsian.jar 上代码: public static void main( ...

  4. 文件下的所有文本内容转为一个csv文件代码

    在数据测试时,需要把一个文件下的无数个txt一个一个的转为csv文件中一个单元格的元素,如果手动转所需工作量太大,所以选择用代码来解决. 因为我做这个文件转换时 文件名是下面这种类型: 首先批量修改文 ...

  5. input text 限制文本内容

    1.只允许输入1个字符 <input type="text" maxlength="1" > 2.只允许输入数字 方法1:<input typ ...

  6. PHP 富文本内容中图片路径追加域名

    public function mergeImageUrl($content){$suffix = 'http://wwww.baidu.com/';$pregRule = "/<[i ...

  7. Java实现标题相似度计算,文本内容相似度匹配,Java通过SimHash计算标题文本内容相似度

     目录 一.前言 二.关于SimHash 补充知识 一).什么是海明距离 二).海明距离的应用 三).什么是编辑距离 三.SimHash算法的几何意义和原理 一).SimHash算法的几何意义 二). ...

  8. Java poi之word文本图片内容提取

    目录结构 前言 文档准备 引入Maven依赖 代码块 提取结果验证 孤勇者提取结果 青鸟提取结果对比 前言 应公司需求,需实现以下功能 word文本内容的替换: word文本内容的提取: word文档 ...

  9. java实现qq邮箱发送附件和图片

    生成授权码 1.进入设置账户里面,把第一个服务开启 2.点生成授权码,在代码中当成是密码 3.集成到springboot里面,引入依赖包 <dependency><groupId&g ...

最新文章

  1. java方法重载编程_学java教程之普通方法重载
  2. secondarynamenode异常
  3. java多线程传值覆盖_Java 多线程传值的四种方法
  4. win10下装黑苹果双系统_win10远程双系统重装电脑维修7黑苹果笔记本安装做虚拟机服务mac8...
  5. 基于java的程序启动出错Could not create the Java virtual machine
  6. asterisk 学习笔记1
  7. 如何修改SharePoint服务器场管理员帐户和密码
  8. 如何利用tcpdump抓包?
  9. 求第k小的数(洛谷P1923题题解,Java/C++语言描述)
  10. cmake中添加引用动态链接_C# 添加、编辑、删除PPT中的超链接
  11. cen7布署mysql数据库
  12. Mac terminal终端或iterm2【 ?~?】~两边出现问号、字体有背景色的问题
  13. 为什么要用Vue.js的组件化开发
  14. 助成招聘网站——个人项目06
  15. PWM驱动sg90电机
  16. Linux如何恢复初始PS1,ps界面怎么恢复默认设置
  17. 重载函数sroot3次,让它返回整数、长整数、双精度数的二次方根
  18. cassandra 避免 allow filter 提升性能的方法
  19. 小学计算机小蘑菇教案,幼儿园中班小蘑菇教案.doc
  20. Qt自绘时钟表盘-1

热门文章

  1. amd插帧技术如何开启_AMD承诺会尽快公布RX6000系列光追和超采样细节
  2. html圆圈中间一个感叹号实现,一个感叹号一个圆圈的故障灯,汽车叹号故障灯图解...
  3. 《七年就是一辈子》 逻辑思维 互联网 得到
  4. 我要用近期业余时间看完这18本书
  5. ELK性能优化实战总结:我凭着这套“神级PDF文档”吊打面试官
  6. 视频文件(MP4)转文本文件(txt)python代码实现
  7. PVCBOT【22号】信步者--多足步履机械兽
  8. 点云 3D 天气数据增强 - LiDAR Snowfall Simulation for Robust 3D Object Detection (CVPR 2022)
  9. pyqt中label标签填充背景色
  10. C++基础—const与指针