Java生成图片(简版)
1、图片模板示例

2、Java代码(简版)
public static void main(String[] args) throws FileNotFoundException, IOException {
int width = 820; // 图片宽
int height = 600;// 图片高
String titleStr = "公司测试点";
String zhangdanzhouqiStr = "2019年2月1日至2019年2月28日"; // 账单周期
String zhangdantianshuStr = "85天"; // 账单天数
String bengedinggonglvStr = "1000KW";// 泵额定功率
String bengbianpingjienengyunxingyongdianliangStr = "100度"; // 泵变频节能运行用电量
String dianjiaStr = "100元/度"; // 电价
String pingjunjienenglvStr = "50%";// 平均节能率
String daizhifujingeStr = "1000元"; // 待支付金额
String bengyunxingzongshichangStr = "200小时"; // 泵运行总时长
String benggongping运行yongdianliangStr = "99度"; // 泵工频运行用电量
String jieshengdianliangStr = "100度"; // 节省电量
String jieshengjineStr = "1000元"; // 节省金额
// 得到图片缓冲区
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// INT精确度达到一定,RGB三原色,高度70,宽度150
// 得到它的绘制环境(这张图片的笔)
Graphics2D g2 = (Graphics2D) bi.getGraphics();
g2.setColor(Color.WHITE); // 设置背景颜色
g2.fillRect(0, 0, width, height);// 填充整张图片(其实就是设置背景颜色)
g2.setColor(Color.black);// 设置字体颜色
g2.setStroke(new BasicStroke(2.0f)); // 边框加粗
g2.drawRect(1, 1, width - 2, height - 2); // 画边框就是黑边框
g2.drawLine(0, 80, 820, 80); // 从上到下第二个横线(标题下面横线)
g2.setStroke(new BasicStroke(0.0f)); // 边框不需要加粗
g2.drawLine(0, 154, 820, 154); // 从上到下第三个横线(账单周期下面横线)
g2.drawLine(0, 228, 820, 228); // 从上到下第四个横线(账单天数下面横线)
g2.drawLine(0, 302, 820, 302); // 从上到下第5个横线(泵额定功率下面横线)
g2.drawLine(0, 376, 820, 376); // 从上到下第6个横线(泵变频节能运行用电量下面横线)
g2.drawLine(0, 451, 820, 451); // 从上到下第7个横线(电价下面横线)
g2.drawLine(0, 525, 820, 525); // 从上到下第8个横线(平均节能率下面横线)
g2.drawLine(180, 80, 180, 600); // 从左到右第二个竖线
g2.drawLine(390, 154, 390, 451); // 从左到右第三个竖线
g2.drawLine(574, 154, 574, 451); // 从左到右第四个竖线
// 设置标题的字体,字号,大小
Font titleFont = new Font("宋体", Font.BOLD, 30);
g2.setFont(titleFont);
String markNameStr = titleStr;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 抗锯齿
// 计算文字长度,计算居中的X点坐标
FontMetrics fm = g2.getFontMetrics(titleFont);
int titleWidth = fm.stringWidth(markNameStr);
int titleWidthX = (width - titleWidth) / 2 - 35;// 感觉不居中,向左移动35个单位
g2.drawString(markNameStr + "节能账单", titleWidthX, 45);
// 账单周期
g2.setFont(new Font("宋体", Font.BOLD, 20));
g2.drawString("账单周期", 33, 125);
// 账单周期的值
g2.drawString(zhangdanzhouqiStr, 230, 125);
// 账单天数
g2.drawString("账单天数", 33, 200);
// 账单天数的值
g2.drawString(zhangdantianshuStr, 230, 200);
// 泵额定功率
g2.drawString("泵额定功率", 33, 274);
// 泵额定功率
g2.drawString(bengedinggonglvStr, 230, 274);
// 泵变频节能运行用电量
g2.drawString("泵变频节能运", 33, 338);
g2.drawString("行用电量", 33, 360);
// // 泵变频节能运行用电量的值
g2.drawString(bengbianpingjienengyunxingyongdianliangStr, 230, 345);
// 电价
g2.drawString("电价", 33, 423);
// 电价的值
g2.drawString(dianjiaStr, 230, 423);
// 平均节能率
g2.drawString("平均节能率", 33, 496);
// 平均节能率
g2.drawString(pingjunjienenglvStr, 230, 496);
// 待支付金额
g2.drawString("待支付金额", 33, 568);
// 待支付金额的值
g2.drawString(daizhifujingeStr, 230, 568);
// 泵运行总时长
g2.drawString("泵运行总时长", 420, 200);
// 泵运行总时长的值
g2.drawString(bengyunxingzongshichangStr, 630, 200);
// 泵工频运行用电量
g2.drawString("泵工频运行用", 420, 265);
g2.drawString("电量", 420, 287);
// 泵工频运行用电量的值
g2.drawString(benggongping运行yongdianliangStr, 630, 274);
// 节省电量
g2.drawString("节省电量", 420, 348);
// 节省电量的值
g2.drawString(jieshengdianliangStr, 630, 345);
// 节省金额
g2.drawString("节省金额", 420, 423);
// 节省金额的值
g2.drawString(jieshengjineStr, 630, 423);
g2.dispose(); // 释放对象
ImageIO.write(bi, "JPEG", new FileOutputStream("D:/a.jpg"));// 保存图片 JPEG表示保存格式
}
3、生成效果图

这个只是个简版,大家可根据自己所需要的模板或图片内容进行修改。
摘自:https://blog.csdn.net/qq_40711092/article/details/121569873
Java生成图片(简版)的更多相关文章
- java语言实现简单接口工具--粗简版
2016注定是变化的一年,忙碌.网红.项目融资失败,现在有点时间整整帖子~~ 目标: 提高工作效率与质量,能支持平台全量接口回归测试与迭代测试也要满足单一接口联调测试. 使用人员: 测试,开发 工具包 ...
- 【Spring源码解析】—— 简单工厂模式的BeanFactory的超简版实现
一.什么是简单工厂模式 设计模式的核心是“分工”,通过分工将对象与职责划分的更细化,进而提升系统设计的可扩展性,使其更容易维护. 开闭原则:对扩展开放,对修改关闭:要增加一个新的处理逻辑,可以开一个新 ...
- SpringBoot2+Netty打造通俗简版RPC通信框架(升级版)
背景 上篇文章我简单的介绍了自己打造的通俗简版RPC通信框架,这篇是对简版的增强~ 如果大家对此项目还感兴趣的话,可到码云上瞄瞄:Netty-RPC 上 ...
- SpringBoot2+Netty打造通俗简版RPC通信框架
2019-07-19:完成基本RPC通信! 2019-07-22:优化此框架,实现单一长连接! 2019-07-24:继续优化此框架:1.增加服务提供注解(带版本号),然后利用Spring框架的在启动 ...
- SimpleThreadPool极简版
package com.dwz.concurrency.chapter13; import java.util.ArrayList; import java.util.LinkedList; impo ...
- 简版在线聊天Websocket
序言 What is Webscoket ? websocket 应用场景 简版群聊实现 代码例子 小结 Webscoket Websokcet 是一种单个TCP连接上进行全双工通信的协议,通过HTT ...
- Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc
Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选 ...
- 《Thinking In Java第四版》拾遗
<Thinking In Java第四版>拾遗 转自我的github(http://katsurakkkk.github.io/2016/05/Thinking-In-Java%E7%AC ...
- Java实现简单版SVM
Java实现简单版SVM 近期的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的. 之所以说是简单版,由于没实用到拉格朗日,对偶,核函数等等.而 ...
- python练习_购物车(简版)
python练习_购物车(简版) 需求: 写一个python购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下 ...
随机推荐
- 【FAQ】统一扫码服务常见问题及解答
1.隐私政策是怎么样的?收集哪些信息? 关于Scan Kit的隐私政策及收集的信息,请查看SDK隐私安全说明. Android:SDK隐私安全说明 iOS:SDK隐私安全说明 2.如何使用多码识别?多 ...
- C# 监听窗口分辨率/DPI变更
当程序运行,窗口已经加载后,如果修改屏幕分辨率,会影响窗口的正常显示. 举个案例: 悬浮窗口,显示在屏幕右下角.当分辨率.文本显示比例变更后,窗口位置可能会超出屏幕范围. 所以当屏幕变更时,我们需要知 ...
- [Pytorch框架] 4.1 Fine tuning 模型微调
文章目录 4.1 Fine tuning 模型微调 4.1.1 什么是微调 为什么要微调 迁移学习 Transfer Learning 二者关系 4.1.2 如何微调 4.1.3 注意事项 4.1.3 ...
- [OpenCV-Python] 10 图像上的算术运算
文章目录 OpenCV-Python: 核心操作 10 图像上的算术运算 10.1 图像加法 10.2 图像混合 10.3 按位运算 OpenCV-Python: 核心操作 10 图像上的算术运算 目 ...
- windows11 下使用 阿里云 modelscope docker 环境 运行参考
昨天看视频 我们做了个能对话的AI派蒙,免费给大家玩! 发现阿里有一个语音转文字的模型(paraformer),之前处理这种需求一直都是直接调用服务商提交好的API接口 突然想尝试一下本地搭建,虽然和 ...
- EasyExcel设置单元格边框
/** * 单元格边框 * @return {@link HorizontalCellStyleStrategy} * @date 2021/10/26 13:22 * @author <a h ...
- selenium 多浏览器处理
开头 当我们做多浏览器自动化测试的时候,需要很多不同的浏览器,所以不同的参数对应不同的浏览器操作 目录结构 新建一个 base.py 文件, 通过 os 捕获到从命令行传进来的 import pyte ...
- SpringBoot 使用 Sa-Token 完成注解鉴权功能
注解鉴权 -- 优雅的将鉴权与业务代码分离.本篇我们将介绍在 Sa-Token 中如何通过注解完成权限校验. Sa-Token 是一个轻量级 java 权限认证框架,主要解决登录认证.权限认证.单点登 ...
- phpstudy-pikachu-字符型注入(get)
在查询栏输入1,点击查询获得查询格式 ?name=1'&submit=查询 *捷径 ' or 1=1 --+ *非捷径 ?name=1' and 1=2 --+ 2--+&submit ...
- 解决git 本地代码与远程仓库冲突问题
在使用协同开发难免会出现同时修改某个文件导致代码冲突的问题 * branch master -> FETCH_HEAD error: Your local changes to the foll ...