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
无论风雨,和自己一决胜负吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律