Java 使用Graphics生成海报图片(附效果图)

news2025/2/24 20:17:12

生成流程

1、创建画布

2、开启画图

3、画布上加载背景图片

4、画布上指定坐标绘制二维码(关于二维码实现的参考文后的链接)

5、将最终的图存放在本地

6、将图片url返回给前端

主要代码:

@PostMapping(value = "/getPoster")
    public Result<?> getPoster(@RequestBody ProductDto productDto) {
        Result<Map<String,Object>> result = new Result<Map<String,Object>>();
        Map<String,Object> map = new HashMap<String,Object>();
        Product product = productService.getById(productDto.getProductId());
        if (StringUtils.isEmpty(product.getPosterImg()))
        {
            return Result.error("海报图片未定义");
        }

        try
        {
            BufferedImage img = new BufferedImage(750, 1334, BufferedImage.TYPE_INT_RGB);
            //开启画图
            Graphics g = img.getGraphics();
            //背景 -- 读取互联网图片
            BufferedImage back  = ImageIO.read(new File(uploadpath + "/" + product.getPosterImg()));
            g.drawImage(back.getScaledInstance(750, 1334, Image.SCALE_DEFAULT), 0, 0, null); // 绘制缩小后的图

            String fileName = productDto.getOpenid() + "@" + productDto.getProductId() + ".jpg";
            //生成二维码
            QRCodeUtil.encode(productDto.getProductUrl(), "", uploadpath + "/qrcode/", fileName, true);
            BufferedImage qrCode  = ImageIO.read(new File(uploadpath + "/qrcode/" + fileName));
            // 绘制缩小后的图
            g.drawImage(qrCode.getScaledInstance(174, 174, Image.SCALE_DEFAULT), 536, 1057, null);
            g.dispose();

            //先将画好的海报写到本地
            String picUrl = uploadpath + "/poster/"  + fileName; // TODO
            File file = new File(picUrl);
            ImageIO.write(img, "jpg",file);
            map.put("imageUrl", "/poster/"  + fileName);
            result.setSuccess(true);
            result.setResult(map);
        } catch (Exception e)
        {
            e.printStackTrace();
            return Result.error("生成海报出现错误!");
        }
        return result;
    }

背景图片(图片有点丑,相关字样及二维码进行了打码处理,不然可能过不了审)

生成后

相关文章

Java 使用zxing生成二维码   https://tangying.blog.csdn.net/article/details/134756196

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

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

相关文章

I/O口接口扩展----82C55

目录 一.扩展的I/O接口功能 二.端口的编址 1.独立编址 2.统一编制 三.I/O数据的传送方式 四.I/O接口电路----82C55 1.82C55的引脚及其内部结构 2.工作方式选择控制字及端口PC置位/复位控制字 3.82C55的三种工作方式 (1)方式0 (2)方式1 (3)方式2 4.AT89S52单片机与…

麒麟V10安装kerberos客户端

麒麟V10系统安装kerberos客户端 当系统具备yum镜像源的时候需要执行安装命令 yum install krb5-devel krb5-client krb5-libs -y 会提示报错 “未找到匹配的参数:krb5-client” 此时我们需要手动安装krb5-client 安装包链接放到了这里 链接: https://pan.baidu.com/s/1x1YVr6…

k8s中批量处理Pod应用的Job和CronJob控制器、处理守护型pod的DaemonSet控制器介绍

目录 一.Job控制器 1.简介 2.Jobs较完整解释 3.示例演示 4.注意&#xff1a;如上例的话&#xff0c;执行“kubectl delete -f myJob.yaml”就可以将job删掉 二.CronJob&#xff08;简写为cj&#xff09; 1.简介 2.CronJob较完整解释 3.案例演示 4.如上例的话&#xf…

数据“表”的增删改查

创建数据表 删除数据表 修改数据表 查看数据表 喜欢点赞收藏&#xff0c;如有疑问&#xff0c;点击链接加入群聊【信创技术交流群】&#xff1a;http://qm.qq.com/cgi-bin/qm/qr?_wv1027&kEjDhISXNgJlMMemn85viUFgIqzkDY3OC&authKey2SKLwlmvTpbqlaQtJ%2FtFXJgHVgl…

适用于 Windows 的 10 个顶级分区管理器软件

您想要对硬盘驱动器或 USB 驱动器进行分区的原因可能有多种。许多用户希望对其外部和内部硬盘驱动器进行分区以有效地管理数据。为了处理分区&#xff0c;Windows为用户提供了一个内置的分区管理工具。 Windows 用户可以通过磁盘管理面板对任何驱动器进行分区。然而&#xff0…

『VUE3后台—大事件管理系统(已完结)』

项目地址&#xff1a;https://gitee.com/csheng-gitee/vue3-big-event-admin 技术栈&#xff1a;VUE3 Pinia Pnpm&#xff08;本项目暂不用 typescript&#xff09; 一、前期准备工作 1、创建项目 npm install -g pnpm pnpm create vue2、ESLint 配置 (1) 禁用 prettier 插…

做销售的时候为什么你的内心会恐惧?

做销售的时候为什么你的内心会恐惧&#xff1f; 做销售的时候&#xff0c;很多人的内心会感到恐惧。这种恐惧可能来自于对自己业绩的担忧&#xff0c;或者是对被拒绝的恐惧。但是&#xff0c;恐惧并不是我们该有的心态。在销售中&#xff0c;我们需要保持自信和冷静&#xff0…

线上超市小程序可以做什么活动_提升用户参与度与购物体验

标题&#xff1a;线上超市小程序&#xff1a;精心策划活动&#xff0c;提升用户参与度与购物体验 一、引言 随着移动互联网的普及&#xff0c;线上购物已经成为人们日常生活的一部分。线上超市作为线上购物的重要组成部分&#xff0c;以其便捷、快速、丰富的商品种类和个性化…

直击2023云栖大会-大模型时代到来:“计算,为了无法计算的价值”

2023年的云栖大会以“计算&#xff0c;为了无法计算的价值”为主题&#xff0c;强调了计算技术在现代社会中的重要性&#xff0c;特别是在大模型时代到来的背景下。 大模型时代指的是以深度学习为代表的人工智能技术的快速发展&#xff0c;这些技术需要大量的计算资源来训练和优…

机器学习决策树ID3算法

1、先去计算总的信息量 2、根据不同指标分别计算对应的信息增益 3、根据算出的信息增益来选择信息增益最大的作为根结点 4、天气中选择一个继续上述过程 5、决策树划分结束

基于Springboot的秒杀系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的秒杀系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xf…

服务器数据恢复—ocfs2文件系统被格式化为其他文件系统如何恢复数据?

服务器故障&#xff1a; 由于工作人员的误操作&#xff0c;将Ext4文件系统误装入到存储中Ocfs2文件系统数据卷上&#xff0c;导致原Ocfs2文件系统被格式化为Ext4文件系统。 由于Ext4文件系统每隔几百兆就会写入文件系统的原始信息&#xff0c;原Ocfs2文件系统数据会遭受一定程度…

电脑监控软件是隐藏安装吗?

电脑监控软件通常可以隐藏安装。 这种类型的软件可能是通过企业管理者下载或拷贝到员工的电脑上的。因为程序包比较小&#xff0c;安装过程也比较简单&#xff0c;所以操作起来也很方便。 企业管理者的这种操作基本上是为了更好管控公司的电脑运行、防止员工恶意泄露公司的机密…

行业分析:2023年智能自动化药房市场现状及发展前景

医药电商是近些年的行业风口&#xff0c;尤其是随着大型互联网平台的介入和互联网医院的兴起&#xff0c;医药电商步入高速增长期。第三方交易服务平台在医药电商的销售额占比为58%&#xff0c;而到了2020年下降至40%。在终端销售额中&#xff0c;大型医院占据了59.7%的份额&am…

【字符串匹配】【KMP算法】Leetcode 28 找出字符串中第一个匹配项的下标☆

【字符串匹配】【KMP算法】Leetcode 28 找出字符串中第一个匹配项的下标 &#xff08;1&#xff09;前缀和后缀&#xff08;2&#xff09;前缀表&#xff08;最长相同的前缀和后缀的长度&#xff09;&#xff08;3&#xff09;匹配过程示意&#xff08;4&#xff09;next数组的…

2024年天津中德应用技术大学专升本专业课报名及考试时间通知

天津中德应用技术大学2024年高职升本科专业课报名确认及考试通知 按照市高招办《2024年天津市高职升本科招生实施办法》&#xff08;津招办高发〔2023〕14号&#xff09;文件要求&#xff0c;天津中德应用技术大学制定了2024年高职升本科专业课考试报名、确认及考试实施方案&a…

【开源】基于Vue.js的人事管理系统

文末获取源码&#xff0c;项目编号&#xff1a; S 079 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S079。} 文末获取源码&#xff0c;项目编号&#xff1a;S079。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员功能模块2.2 普通员工功能模块…

【JVM系列】Class文件分析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

IDEA2023找不到 Allow parallel run

我的idea版本&#xff1a;2023.1.4 第一步&#xff1a;点击Edit Configrations 第二步&#xff1a;点击Modify options 第三步&#xff1a;勾选Allow multiple instances 最后点击Apply应用一下 ok,问题解决&#xff01;

直播的种类及类型

随着网络技术和移动设备的普及&#xff0c;直播已经成为人们娱乐、学习、商业交流等众多领域的重要工具。 直播的种类主要有以下几种: 1.视频直播:这是最常见的直播形式&#xff0c;包括电商直播、婚庆直播、培训直播、家居直播等。 2.图文直播:这种直播形式包括PPT互动直播…