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生成图片(简版)的更多相关文章

  1. java语言实现简单接口工具--粗简版

    2016注定是变化的一年,忙碌.网红.项目融资失败,现在有点时间整整帖子~~ 目标: 提高工作效率与质量,能支持平台全量接口回归测试与迭代测试也要满足单一接口联调测试. 使用人员: 测试,开发 工具包 ...

  2. 【Spring源码解析】—— 简单工厂模式的BeanFactory的超简版实现

    一.什么是简单工厂模式 设计模式的核心是“分工”,通过分工将对象与职责划分的更细化,进而提升系统设计的可扩展性,使其更容易维护. 开闭原则:对扩展开放,对修改关闭:要增加一个新的处理逻辑,可以开一个新 ...

  3. SpringBoot2+Netty打造通俗简版RPC通信框架(升级版)

    背景         上篇文章我简单的介绍了自己打造的通俗简版RPC通信框架,这篇是对简版的增强~         如果大家对此项目还感兴趣的话,可到码云上瞄瞄:Netty-RPC         上 ...

  4. SpringBoot2+Netty打造通俗简版RPC通信框架

    2019-07-19:完成基本RPC通信! 2019-07-22:优化此框架,实现单一长连接! 2019-07-24:继续优化此框架:1.增加服务提供注解(带版本号),然后利用Spring框架的在启动 ...

  5. SimpleThreadPool极简版

    package com.dwz.concurrency.chapter13; import java.util.ArrayList; import java.util.LinkedList; impo ...

  6. 简版在线聊天Websocket

    序言 What is Webscoket ? websocket 应用场景 简版群聊实现 代码例子 小结 Webscoket Websokcet 是一种单个TCP连接上进行全双工通信的协议,通过HTT ...

  7. Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc

    Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选 ...

  8. 《Thinking In Java第四版》拾遗

    <Thinking In Java第四版>拾遗 转自我的github(http://katsurakkkk.github.io/2016/05/Thinking-In-Java%E7%AC ...

  9. Java实现简单版SVM

    Java实现简单版SVM 近期的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的.         之所以说是简单版,由于没实用到拉格朗日,对偶,核函数等等.而 ...

  10. python练习_购物车(简版)

    python练习_购物车(简版) 需求: 写一个python购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下 ...

随机推荐

  1. 使用 Transformers 进行图分类

    在之前的 博文 中,我们探讨了图机器学习的一些理论知识.这一篇我们将探索如何使用 Transformers 库进行图分类.(你也可以从 此处 下载演示 notebook,跟着一起做!) 目前,Tran ...

  2. ASP.NET Core - 缓存之分布式缓存

    分布式缓存是由多个应用服务器共享的缓存,通常作为访问它的应用服务器的外部服务进行维护. 分布式缓存可以提高 ASP.NET Core 应用的性能和可伸缩性,尤其是当应用由云服务或服务器场托管时. 与其 ...

  3. Vue的项目打包为移动端(安卓手机应用)app

    现在基于vue全家桶技术体系,基本上可以开发各端的各种应用,pc端的应用,开发完成以后,直接运行打包命令 yarn build 即可打包,部署到服务器端上线即可.那么,今天我们来聊一聊,开发好的vue ...

  4. vue-cli3构建和发布 实现分环境打包步骤(给不同的环境配置相对应的打包命令)

    https://panjiachen.github.io/vue-element-admin-site/zh/guide/essentials/deploy.html#%E6%9E%84%E5%BB% ...

  5. Godot 4.0 文件系统特性的总结

    关于文件系统,官方文档犹抱琵琶半遮面,有一些很独特的特性并没有集中地摆出来,导致用的时候晕头转向. 这里总结了目前我发现的Godot文件系统的一些特性. 这是专门针对导出后的,因为一些操作在编辑器里面 ...

  6. [UR #14]人类补完计划

    计数好题. 题意:给定简单无向图 \(G=(V,E),|V|=n,|E|=m\),有 \(n\leq 16,m\leq {n\choose 2}\),求所有为基环树的子图的权值之和.一个基环树的权值定 ...

  7. 【OpenAI】私有框架代码生成实践

    作者:京东零售 牛晓光 根据现有调研和实践,由OpenAI提供的ChatGPT/GPT-4模型和CodeX模型能够很好的理解和生成业界大多数编程语言的逻辑和代码,其中尤其擅长Python.JavaSc ...

  8. 使用GitHub当博客图床提升博客访问速度

    前言 作为一个穷逼来说站长来说,只有一个1M宽带这样的小水管服务器,如果博客稍微放一点图片到本地,然后人多点访问网站基本就很卡了,但又不想去吧图片放到图床里然后复制链接到文章里面那么麻烦 如何解决这个 ...

  9. 2022-12-21:uifd/ui-for-docker是docker的web可视化工具。请问部署在k3s中,yaml文件如何写?

    2022-12-21:uifd/ui-for-docker是docker的web可视化工具.请问部署在k3s中,yaml文件如何写? 答案2022-12-21: yaml如下: apiVersion: ...

  10. django时区问题的解决

    django时区问题的解决  更新时间:2021年05月18日 09:37:58   作者:Silent丿丶黑羽     我们都知道时区,标准时区是UTC时区,django默认使用的就是UTC时区,我 ...