Java使用Graphics2D将文字转换无背景文字图片在将图片保存到本地

2023-11-07 01:40

本文主要是介绍Java使用Graphics2D将文字转换无背景文字图片在将图片保存到本地,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Graphics2D文字转换无背景文字图片

功能目标

实现将字符串转换成一个无背景的图片

实现效果图:
在这里插入图片描述
代码实现:

	/** * 工具类**/public static void main(String[] args) {HashMap<String, String> dto=new HashMap<String, String>();// 将文本转为图片String name = "哈哈哈哈 @少年";// 生成图片名称String fileName = System.currentTimeMillis() + "suyin.jpg";// 这是代表你生成图片后图片保存的路径 /Users/tp/ 是mac的路径地址,win系统的自行更换String path = "/Users/tp/"+fileName;textToPicture(name, path);}/*** 文字转图片* name 需要转换的文字* path 转换完成后保存的地址路径*/public static void textToPicture(String name,String path){boolean rs;String content = name;int length = content.length();//300;// 宽int width = length * 45;// 高int height = 100;//23;int lineLength = 47;//24;int lineLength2 = 47;String content1 = content;String content2 = "";String content3 = "";int cnLineLength = lineLength;for (int i = 0;i < content.length();i++) {char ca = content.charAt(i);if ((ca < '0' || ca > '9') && ca != '-' && ca != ':' && ca != '(' && ca != ')' && ca != '.' && ca != ',' && ca != ' ') {cnLineLength = cnLineLength - 1;}if (i >= cnLineLength){break;}}if (content.length() > cnLineLength) {content1 = content.substring(0, cnLineLength);content2 = content.substring(cnLineLength);String line2 = content2;int cnLineLength2 = lineLength2;for (int i = 0;i < line2.length();i++) {char ca = line2.charAt(i);if ((ca < '0' || ca > '9') && ca != '-' && ca != ':' && ca != '(' && ca != ')' && ca != '.' && ca != ',' && ca != ' ') {cnLineLength2 = cnLineLength2 - 1;}if (i >= cnLineLength2){break;}}if (line2.length() > cnLineLength2) {content2 = line2.substring(0, cnLineLength2);content3 = line2.substring(cnLineLength2);}}BufferedImage bi = null;Graphics2D g2 = null;OutputStream outPutStream = null;try{bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);g2 = (Graphics2D) bi.getGraphics();// 增加下面代码使得背景透明bi = g2.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);g2.dispose();g2 = (Graphics2D) bi.getGraphics();g2.setColor(new Color(255, 255, 255));g2.setStroke(new BasicStroke(1f));g2.fillRect(128, 128, width, height);Font font = new Font("宋体", Font.BOLD, 40);g2.setFont(font);g2.drawString(content1, 10, 70);g2.drawString(content2, 10, 300);g2.drawString(content3, 10, 400);outPutStream = new FileOutputStream(path);JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outPutStream);encoder.encode(bi);rs = true;} catch (Exception e) {e.printStackTrace();rs = false;} finally {if (g2 != null){g2.dispose();}if (outPutStream != null) {try {outPutStream.close();} catch (IOException e) {e.printStackTrace();}}}}

ps:一个开发界的小学生,一直在学习从未敢停止

这篇关于Java使用Graphics2D将文字转换无背景文字图片在将图片保存到本地的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/360387

相关文章

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

MyBatis与其使用方法示例详解

《MyBatis与其使用方法示例详解》MyBatis是一个支持自定义SQL的持久层框架,通过XML文件实现SQL配置和数据映射,简化了JDBC代码的编写,本文给大家介绍MyBatis与其使用方法讲解,... 目录ORM缺优分析MyBATisMyBatis的工作流程MyBatis的基本使用环境准备MyBati

Java嵌套for循环优化方案分享

《Java嵌套for循环优化方案分享》介绍了Java中嵌套for循环的优化方法,包括减少循环次数、合并循环、使用更高效的数据结构、并行处理、预处理和缓存、算法优化、尽量减少对象创建以及本地变量优化,通... 目录Java 嵌套 for 循环优化方案1. 减少循环次数2. 合并循环3. 使用更高效的数据结构4

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav