JAVA开发 利用代码生成奖状

通过java实现用模板生成奖状

    • 1、图片模板
    • 2、实现代码
    • 3、生成模板

1、图片模板

在这里插入图片描述

在这里插入图片描述

2、实现代码

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.font.TextAttribute;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.AttributedString;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.awt.Font;
import java.awt.font.FontRenderContext;
import java.awt.font.LineBreakMeasurer;
import java.awt.font.TextLayout;public class InsertPic {public static final  String PATH = "D:\\OA_Temp";public static void MakeCertificateOfAppreciation(String recognizor,String content){try{// 奖状图片(背景)BufferedImage backgroundImage = ImageIO.read(new File(PATH + "\\templates\\Certificate.jpg"));// 公司章 (插入章)BufferedImage imageToInsert = ImageIO.read(new File(PATH + "\\templates\\CompanySeal.png"));// 计算缩放比例,这里假设我们想要将图片缩放到公司章宽度高度的50%double scaleFactor = 0.5;int scaledWidth = (int) (imageToInsert.getWidth() * scaleFactor);int scaledHeight = (int) (imageToInsert.getHeight() * scaleFactor);// 创建一个Graphics2D对象,用于在奖状上插入公司章Graphics2D g2d = backgroundImage.createGraphics();// 设置文本的颜色、字体等g2d.setColor(Color.black); // 文本颜色Font font = new Font("SimSun", Font.PLAIN, 20);g2d.setFont(font);FontMetrics fm = g2d.getFontMetrics();// 设置奖励人g2d.drawString(recognizor, 80, 280);//设置奖状内容// 计算文本的宽度和高度FontRenderContext frc = g2d.getFontRenderContext();AttributedString attributedText = new AttributedString(content);attributedText.addAttribute(TextAttribute.FONT, font);// 设定文本绘制的起始位置float drawX = 80; // 文本起始的X坐标float drawY = 310; // 文本起始的Y坐标(基线位置)// 创建LineBreakMeasurer实例LineBreakMeasurer measurer = new LineBreakMeasurer(attributedText.getIterator(), frc);// 绘制每一行文本while (measurer.getPosition() < content.length()) {TextLayout layout = measurer.nextLayout(backgroundImage.getWidth() - drawX * 2); // 减去左右间距float y1 = drawY + layout.getAscent();layout.draw(g2d, drawX, y1);drawY += layout.getAscent() + layout.getDescent() + layout.getLeading();}//设置特此表彰,以资鼓励。String text = "特此表彰,以资鼓励。";g2d.drawString(text, 80, 580);;//设置公司名text = "这是一个公司名(中国)有限公司";g2d.drawString(text, 650, 600);;// 创建一个Date对象(这里使用当前时间作为示例)Date date = new Date();// 创建一个SimpleDateFormat对象并指定日期格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月 ");String formattedDate = sdf.format(date);//设置生成年月日text = "年 月:"+formattedDate;g2d.drawString(text, 710, 620);// 绘制公司章到奖状上//g2d.drawImage(imageToInsert, x, y, null);g2d.drawImage(imageToInsert.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH), 680, 580, null);// 释放Graphics2D资源g2d.dispose();sdf = new SimpleDateFormat("yyyyMMdd HHmm ");// 使用SimpleDateFormat的format方法将Date对象转换为字符串formattedDate = sdf.format(date);String fileName = formattedDate + "temp.png";// 保存合并后的图片ImageIO.write(backgroundImage, "jpg", new File(PATH +"\\attachments\\"+fileName));} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {String recognizor = "你好,星期六";String content ="   苍茫的天涯是我的爱  绵绵的青山脚下花正开  什么样的节奏是最呀最摇摆  什么样的歌声才是最开怀 弯弯的河水从天上来 流向那万紫千红一片海 哗啦啦的歌谣是我们的期待 " +"一路边走边唱才是最自在 我们要唱就要唱得最痛快  你是我天边最美的云彩  让我用心把你留下来  留下来  悠悠的唱着最炫的民族风  让爱卷走所有的尘埃  我知道  " +"你是我心中最美的云彩  斟满美酒让你留下来  留下来  永远都唱着最炫的民族风 是整片天空最美的姿态  留下来";MakeCertificateOfAppreciation(recognizor,content);}
}

3、生成模板

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三坐标测量机在汽车零部件质量控制中的应用

高质量的零部件能够确保汽车的性能达到设计标准&#xff0c;包括动力性能、燃油效率、操控稳定性等&#xff0c;从而提供更好的驾驶体验&#xff0c;建立消费者对汽车品牌的信任&#xff1b;也推动了汽车行业的技术创新&#xff0c;制造商不断研发新材料、新工艺&#xff0c;以…

Java 登录错误次数限制,用户禁登1小时

手机号验证码登录&#xff0c;验证码输入错误次数超5次封禁 Overridepublic boolean checkCaptcha(String phoneNum, String captcha) {String codeNum (String) redisTemplate.opsForValue().get(UserCacheNames.USER_CAPTCHA phoneNum);if (codeNum null) {throw new Wan…

怎么图片转excel表格免费?介绍三个方法

怎么图片转excel表格免费&#xff1f;在日常工作中&#xff0c;我们经常需要将图片中的表格数据转化为可编辑的Excel格式。幸运的是&#xff0c;市面上有多款软件支持这一功能&#xff0c;并且部分软件还提供免费使用的选项。本文将为您详细介绍几款可以免费将图片转换为Excel表…

Java 异步编程——Java内置线程调度器(Executor 框架)

文章目录 Java多线程的两级调度模型Executor 框架Executor 框架的组成概念Executor 框架中任务执行的两个阶段&#xff1a;任务提交和任务执行 在 Java1.5 以前&#xff0c;开发者必须手动实现自己的线程池&#xff1b;从 Java1.5 开始&#xff0c;Java 内部提供了线程池。 在J…

Python代码:十九、列表的长度

1、题目 描述&#xff1a; 牛牛学会了使用list函数与split函数将输入的连续字符串封装成列表&#xff0c;你能够帮他使用len函数统计一些公输入了多少字符串&#xff0c;列表中有多少元素吗&#xff1f; 输入描述&#xff1a; 输入一行多个字符串&#xff0c;字符串之间通过…

基于Java+SpringBoot+Mybaties-plus+Vue+elememt + uniapp 驾校预约平台 的设计与实现

一.项目介绍 系统角色&#xff1a;管理员、教练、学员 小程序(仅限于学员注册、登录)&#xff1a; 查看管理员发布的公告信息 查看管理员发布的驾校信息 查看所有教练信息、预约(需教练审核)、评论、收藏喜欢的教练 查看管理员发布的考试信息、预约考试(需管理…

流媒体内网穿透/组网/视频协议转换EasyNTS上云网关如何更改密码?

EasyNTS上云网关的主要作用是解决异地视频共享/组网/上云的需求&#xff0c;网页对域名进行添加映射时&#xff0c;添加成功后会生成一个外网访问地址&#xff0c;在浏览器中输入外网访问地址&#xff0c;即可查看内网应用。无需开放端口&#xff0c;EasyNTS上云网关平台会向Ea…

【linux】深入了解线程池:基本概念与代码实例(C++)

文章目录 1. 前言1.1 概念1.2 应用场景1.3 线程池的种类1.4 线程池的通常组成 2. 代码示例2.1 log.hpp2.2 lockGuard.hpp① pthread_mutex_t 2.3 Task.hpp2.4 thread.hpp2.5 threadPool.hpp① 基本框架② 成员变量③ 构造函数④ 其余功能函数&#xff1a; main.cc结果演示 完整…

动态规划-似包非包问题

组合总和 Ⅳ&#xff08;377&#xff09; 题目描述&#xff1a; 状态表示&#xff1a; 我们看到这题发现有一个限制条件就是目标整数target并且此时数组中的数字是可以重复选择的&#xff0c;这时候不难联想到前面学习的完全背包问题&#xff0c;这题好像符合完全背包问题的…

关于linux磁盘告警问题

案例&#xff1a;我们在执行df命令时&#xff0c;查看到磁盘利用率很高&#xff0c;但是到相对应的目录执行du -sh *来找大文件时进行删除时&#xff0c;发现各个目录相加并不大&#xff0c;如下图&#xff1a; 使用df命令查看到根(/)目录使用到33G&#xff0c;而du命令显示只使…

FuTalk设计周刊-Vol.050

#AI漫谈 热点捕手 1.Canva 宣布收购 Affinity 创意套件 平面设计平台 Canva 于 3 月 26 日宣布收购知名设计软件 Affinity 以“迎战”Adobe&#xff0c;不过此后许多设计师开始担心原本采用“永久授权”付费方案的 Affinity 系列软件是否会转为订阅制&#xff0c;而目前 Canv…

Android Studio开发之路(十四)自定义Titlebar以及设置顶部状态栏颜色

一、描述 项目需求&#xff0c;我要做一个下图这样的titlebar,包括一个返回按钮&#xff0c;一个关闭按钮&#xff0c;一个文本框。默认的titlebar按钮设计不太满足我的需求&#xff0c;于是我打算自定义一个titlebar组件&#xff0c;应用到我的每一个页面 二、titlebar组件设…

【NumPy】关于numpy.searchsorted()函数,看这一篇文章就够了

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

【Qt】数据库(一)SQLITE创建、增删查改

填坑1&#xff1a;如何连续插入 汇总SQlite语句 创建表格&#xff1a;create table <table_name> (f1 type1, f2 type2,…); 增&#xff1a;insert into <table_name> values (value1, value2,…); 改&#xff1a;update <table_name> set <f1value1>,…

数据结构第二篇【关于java线性表(顺序表)的基本操作】

【关于java线性表&#xff08;顺序表&#xff09;的基本操作】 线性表是什么&#xff1f;&#x1f435;&#x1f412;&#x1f98d;顺序表的定义&#x1f9a7;&#x1f436;&#x1f435;创建顺序表新增元素,默认在数组最后新增在 pos 位置新增元素判定是否包含某个元素查找某个…

使用高性能NIO框架netty实现IM集群对聊方案

文章目录 前言技术积累什么是nettynetty如何实现IM如何实现IM集群 实战演示基础配置netty搭建IM集群redis发布订阅 实战测试 前言 在前面的博文中我们分享了原生websoket集群搭建&#xff0c;也用redis 发布订阅实现了集群消息正常有序分发。但是有不少同学希望风向一期netty实…

Json差异比较

json差异比较 如何比较两个json的差异 代码实现 导入依赖 <dependency><groupId>cn.xiaoandcai</groupId><artifactId>json-diff</artifactId><!-- 旧版本可能存在某些缺陷。版本请以maven仓库最版为准。 --><version>4.1.3-RC1-R…

问题记录_stm32“No target connected“

问题描述&#xff1a; 基于HAL库和stm32cubeMX生成的代码&#xff0c;烧录时出现如下报错窗口&#xff1a; 问题原因&#xff1a; stm32cubeMX生成代码时关闭了SWJ调试功能 解决方法&#xff1a; 在项目中找到__HAL_AFIO_REMAP_SWJ_DISABLE();并注释掉 然后短按复位键的…

AI大模型是如何测试效果的?

AI大模型的测试和评估是一个复杂的过程&#xff0c;通常包括多个方面的考量&#xff0c;因此对大模型的测试也称为多度测试。 可以简单概括为以下几个方面&#xff1a; 基准测试&#xff08;Benchmarking&#xff09;&#xff1a;使用标准数据集和任务评估模型性能&#xff0c…

c语言从入门到函数速成(完结篇)

哈喽&#xff0c;小伙伴们大家好呀&#xff0c;本篇文章是这个系列的完结篇&#xff0c;希望大家看完后能有所收获哦 首先能看到这里的同学&#xff0c;一定也是自觉性比较强的了&#xff0c;我会在文章末尾给大家发点小福利 那么&#xff0c;我们先来通过数学中的函数来引入一…