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购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下 ...
随机推荐
- oss/obs对象存储上传图片,在浏览器输入地址却是下载图片。不能直接在浏览器上查看。
1.问题oss/obs对象存储上传图片获取链接地址后,在浏览器输入地址却是下载.不能直接在浏览器上面浏览图片信息.2.解决上传文件的时候需要设置:content-type类型,需要指示浏览器这是什么类 ...
- 【总结】从++i思考计算机原子性和线程安全
在C++中,++i被认为是一种原子性操作,即不可分割的.不可中断的整体.它能够确保对变量的修改完整且正确,从而避免了数据竞争等问题,提高了程序的并发性和可靠性.然而,有些人可能会将原子性和线程安全混淆 ...
- C# 闭包类对弱引用的坑
闭包.弱引用的简单概念,大佬们描述的很多,有不了解的可以看看: 理解C#中的闭包 - 黑洞视界 - 博客园 (cnblogs.com) C#弱引用(WeakReference) - 简书 (jians ...
- C# 无需管理员权限提示,操作C盘文件
在C盘创建.移动文件,如果当前不是管理员身份,是没办法直接操作. 如果当前程序有管理员权限,那可以直接操作. 但是,添加管理员权限启动,会弹出用户确认提示框. 在某些场景下,其实是不想让用户看到这样的 ...
- Apache DolphinScheduler 开源之夏学生项目申请开启,6 大课题等你来拿万元奖金!
开源之夏 2023 学生报名已经正式开启!Apache DolphinScheduler 今年继续参与开源之夏的活动,2023 年 4 月 29 日-6 月 3 日 15:00 UTC+8,同学们可以 ...
- 2022-05-26:void add(int L, int R, int C)代表在arr[L...R]上每个数加C, int get(int L, int R)代表查询arr[L...R]上的累加
2022-05-26:void add(int L, int R, int C)代表在arr[L-R]上每个数加C, int get(int L, int R)代表查询arr[L-R]上的累加和, 假 ...
- 2021-02-22:一个象棋的棋盘,然后把整个棋盘放入第一象限,棋盘的最左下角是(0,0)位置,那么整个棋盘就是横坐标上9条线、纵坐标上10条线的区域。给你三个 参数 x,y,k。返回“马”从(0,0)位置出发,必须走k步。最后落在(x,y)上的方法数有多少种?
2021-02-22:一个象棋的棋盘,然后把整个棋盘放入第一象限,棋盘的最左下角是(0,0)位置,那么整个棋盘就是横坐标上9条线.纵坐标上10条线的区域.给你三个 参数 x,y,k.返回"马 ...
- 2022-02-01:粉刷房子 II。 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。 当然,因为市场上不同颜色油漆的价
2022-02-01:粉刷房子 II. 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油漆的价 ...
- 2021-11-22:给定一个正数数组arr,表示每个小朋友的得分; 任何两个相邻的小朋友,如果得分一样,怎么分糖果无所谓,但如果得分不一样,分数大的一定要比分数少的多拿一些糖果; 假设所有的小朋友坐
2021-11-22:给定一个正数数组arr,表示每个小朋友的得分: 任何两个相邻的小朋友,如果得分一样,怎么分糖果无所谓,但如果得分不一样,分数大的一定要比分数少的多拿一些糖果: 假设所有的小朋友坐 ...
- 2021-08-06:天际线问题。城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回由这些建筑物形成的 天际线 。每个建筑物的几何信息由数组 build
2021-08-06:天际线问题.城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓.给你所有建筑物的位置和高度,请返回由这些建筑物形成的 天际线 .每个建筑物的几何信息由数组 build ...