Java将文件转换成二维码

2023-11-08

生成二维码主要代码为在步骤1、2中,下边后续步骤3、4、5涉及到具体的业务。要是用该工具类时需要拷贝前两个步骤代码即可。

1、在项目pom.xml文件中引入生成二维码的第三方依赖

<!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.3.3</version>
</dependency>

2、生成二维码的工具类

/**
 * 二维码生成工具
 */
public class QRCodeUtils {

    private static final int BLACK = 0xFF000000;
    private static final int WHITE = 0xFFFFFFFF;

    /**
     * 根据字符串生成对应的二维码图片png
     * 大小:300*300
     * <p>
     * content:要转换的文字内容
     * path:生成的二维码图片的绝对路径
     * filename: 生成后的二维码图片的文件名
     * Constants.SYS_HOME_QRCODE_FORMAT=“PNG”。我在外部常量类中定义的一个常量,即生成的二维码图片的格式
     */
    public static void buildQuickMark(String content, String path, String filename) {
        try {
            BitMatrix byteMatrix = new MultiFormatWriter().encode(new String(content.getBytes(), "iso-8859-1"),
                    BarcodeFormat.QR_CODE, 300, 300);
            String format = Constants.SYS_HOME_QRCODE_FORMAT;
            File file = new File(path + "\\" + filename + "." + format);
            BufferedImage image = toBufferedImage(byteMatrix);
            if (!ImageIO.write(image, format, file)) {
                throw new IOException("Could not write an image of format " + format + " to " + file);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 设置二维码格式
     *
     * @param matrix
     * @return
     */
    private static BufferedImage toBufferedImage(BitMatrix matrix) {
        int width = matrix.getWidth();
        int height = matrix.getHeight();
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
            }
        }
        return image;
    }
}


//测试将http://127.0.0.1:8888链接生成二维码
public static void main(String[] args) {
    //设置图片内容
    String content = "http://127.0.0.1:8888";
    //设置图片存放位置
    String path = "D:\\QRCode";
    //设置生成的图片的名字
    String filename = "test";
    QRCodeUtils.buildQuickMark(content, path, filename);
    System.out.println("创建成功");
}

3、生成的二维码图片

在这里插入图片描述

4、生成二维码的业务层代码实现类

/**
 * 二维码 业务层处理
 *
 * @author sense
 */
@Service
public class SysQRCodeServiceImpl implements SysQRCodeService {

    @Autowired
    SysConfigService sysConfigService;

    public String getQRCode() {
        return saveQRCode();
    }

    //将生成的二维码保存到服务器,并返回文件名
    public String saveQRCode(){
        //首先拿到系统配置中的要转换的二维码的值
        String configValue = sysConfigService.selectConfigByKey(Constants.SYS_HOME_QRCODE).getConfigValue();
        String qrCodeName = "QRCode";
        //生成二维码图片
        QRCodeUtils.buildQuickMark(configValue,uploadUrl(), qrCodeName);
        String resultQRCodeName = qrCodeName+"."+Constants.SYS_HOME_QRCODE_FORMAT;
        return resultQRCodeName;
    }


    //设置生成的二维码存放路径
    public String uploadUrl() {
        // 根据系统当前日期
        Date now = new Date();
        String date = new SimpleDateFormat("yyyyMM").format(now);
        // 设置图片存放地址
        String uploadFilePath = SenseConfig.getUploadFilePath();
        // 判断是否存在地址,如果不存在,按照规则创建文件夹
        File addr = new File(uploadFilePath);
        if (!addr.exists()) {
            addr.mkdirs();
        }
        return uploadFilePath;
    }

5、生成二维码的业务层代码接口

public interface SysQRCodeService {
    String getQRCode();
}

6、生成二维码的接口,共前端调用,获取生成二维码的图片名

/**
 * QRCode 生成二维码
 */
@RestController
@RequestMapping("/sys/QRCode")
public class SysQRCodeController {

    @Autowired
    SysQRCodeService sysQRCodeService;

    @RequestMapping()
    public AjaxResult getQRCode(){
        return AjaxResult.success(sysQRCodeService.getQRCode());
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java将文件转换成二维码 的相关文章

  • 解决IDEA导入MAVEN项目,jar包没有引进来报Cannot resolve symbol 'Autowired'

    解决IDEA导入MAVEN项目 jar包没有引进来报Cannot resolve symbol Autowired 原因 IDEA的缓存导致 解决办法 找到项目所在文件夹 找到 idea文件夹 删掉 从新导入 就好了
  • Your account has been blocked. git更新代码时报错

    记录一下问题 原因解释 当前用户登录信息过期 在浏览器里登录gitlab后台 长时间没有重新登录 导致后端登录session失效 自动锁住用户账号 此时通过ssh下载也就无法更新代码 解决办法 在浏览器重新登录gitlab网站 然后重新更新
  • win32平台中的程序转换为wince中的一些错误 . 未能为“VCCLCompilerTool”工具生成命令行

    转载自 http blog csdn net shirui1125 article details 6095774 gt ToolBox error PRJ0004 未能为 VCCLCompilerTool 工具生成命令行 从原有的平台复制
  • vite插件介绍 - vite-plugin-meta-env

    vite插件介绍 vite plugin meta env a vite plugin define dynamic env variables in import meta env npm github 可以基于本仓库去开发自己的vite
  • CStatusBar技巧

    一 状态条控制的主要功能 状态条控制 Status Bar Control 比较容易理解 使用起来也比较简单 状态条是位于父窗口底部的一个水平子窗口 它可以被分成多个显示信息的小区域 其MFC中封装的CstatusBarCtrl控制类提供了
  • wsl配置

    文章目录 1 systemd服务开启 2 固定IP 2 1 官网的方案 2 2 通过WSL2的Linux子系统设置静态IP 2 3 其他方案 3 运行 Linux GUI 应用安装 Chrome 浏览器 此文接我放弃了VMware 1 sy
  • 2021-1-7-一文掌握git/github使用,内容详细,适合新手入门~

    文章目录 前言 一 git是什么 二 github 1 了解github 2 注册github账户 三 git安装 1 windows安装git 2 linux安装git 四 git github使用 1 git工作流简介 2 git基本命
  • word怎么删除最后一页空白页

    1 将光标移动到最后一页的起始处 不停的按删除键 gt 我试了 无效 2 将光标定位在倒数第二页的末尾 直接按delete键进行删除 或者可以试试按住ctrl键再按delete键 gt 我试了 还是无效 3 将光标移动到最后一页 在菜单栏找
  • 一些比较好用的域名信息查询网站

    NSEC Lab 查询IP地址所在位置及可信程度 真人概率 的数值在50 以上 可以被认定为此IP的网页访问量基本由人类主动行为产生 分值愈高越真实 低于50 则有较高可能性是此IP的行为是机器人主导 ip地址归属地查询 可查询网站域名 解
  • 我放弃了VMware

    文章目录 哈哈哈 不得不说 有点儿标题狗的意思 不去写新闻真的屈才了 正如标题所说 我弃用了VMware 但是我使用上了WSL2 相对来说 wsl2使我不怎么担心我16G的内存不够用 其实 wsl也是虚拟技术的一种 但是相比VMware v
  • idea同一程序打开多个控制台

  • 怎么转发CSDN中的文章

    2018年09月24日 19 28 33 jackfjw 阅读数 900更多 分类专栏 Html 版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csd
  • RabbitMQ的安装和启动——windows版

    本章介绍如何在win10下安装 RabbitMQ 并启动 安装 Erlang 安装 RabbitMQ 启动 RabbitMQ 百度网盘下载 Erlang 和 RabbitMQ Erlang 网盘链接 RabbitMQ 网盘链接 结语 下载R
  • QT实现动态翻译和语言切换

    QT GUI提供语言动态转换机制并辅以相应的工具方便programmer实现界面的多语言实时动态切换功能 实现语言动态切换的方法 一个注意 五个步骤 一个注意 实现QT工程的语言切换功能的一个关键点是所有的字符串都需要tr修饰符 例如 m
  • git 提交代码时,提示输入用户名和密码,不知道用户名和密码是啥

    最近在跟小伙伴一起做小项目玩 之前clone代码时都是ssh 这次用的是https 提交代码遇到问题 在网上没有查到解决问题的办法 所以在这里记录以下这个问题的解决办法 后续有时间要 熟练掌握 git的使用方法 当小伙伴再遇到问题时 就可以
  • Java:List<Map>指定Key去重,差集(针对集合里面只有Map非实体对象)

    ListMap去重 差集 针对集合里面只有Map非实体对象 问题 由于业务需求 接口的入参出参都是List格式 对于有些查出来的数据 为了防止重复的数据 需要对集合去重 以下分享一种去重的方法 该方法可根据指定字段对List
  • idea 生成类图

    选中类 ctrl alt u或者ctrl alt shift u 生成类图
  • Toad常用快捷键和缩写替换

    Toad常用快捷键 F8 调出以前执行的sql命令 F9 执行全部sql Ctrl T 补全table name 或者显示字段 alt 箭头上下 看sql history Ctrl Enter 直接执行当前选中的sql Ctrl Shift
  • 开源一个超好用的接口Mock工具——Msw-Tools

    作为一名前端开发 是不是总有这样的体验 基础功能逻辑和页面UI开发很快速 本来可以提前完成 但是接口数据联调很费劲 耗时又耗力 有时为了保证进度还不得不加加班 为了摆脱这种痛苦 经过一周的努力 从零开发了一个灵活无依赖 且集成简单的数据接口
  • 开源一个超好用的接口Mock工具——Msw-Tools

    作为一名前端开发 是不是总有这样的体验 基础功能逻辑和页面UI开发很快速 本来可以提前完成 但是接口数据联调很费劲 耗时又耗力 有时为了保证进度还不得不加加班 为了摆脱这种痛苦 经过一周的努力 从零开发了一个灵活无依赖 且集成简单的数据接口

随机推荐

  • Pytest 自定义HOOK函数

    除了系统提过的HOOK函数外 也可以通过自定义HOOK的方式实现想要的功能 首先创建一个py文件 里面定义自己的HOOK函数 主要pytest里面的hook函数必须以pytest开头 myhook py def pytest myhook
  • 三. Zuul 网关服务基础解释及基础搭建测试

    目录 一 基础 Zuul 与 Gateway 区别 二 Zuul1 网关 三 Zuul 核心过滤器 pre过滤器 route过滤器 post过滤器 四 搭建 Zuul 网关服务 通过 Zuul 间接访问微服务接口 1 步骤 2 创建目标服务
  • 女性架构师优先?驾驭概念的技能是最高潜力

    51CTO独家特稿 在近日51CTO开发频道对数位架构师进行采访的时候 编辑观察到一个很有意思的现象 那就是他们在提起一个假想架构师的时候会下意识的使用 she 或者 她 来指代 然而我们这次采访到的的架构师们却全都是男士 这似乎是一个比较
  • 1254 统计封闭岛屿的数目(dfs)

    1 问题描述 有一个二维矩阵 grid 每个位置要么是陆地 记号为 0 要么是水域 记号为 1 我们从一块陆地出发 每次可以往上下左右 4 个方向相邻区域走 能走到的所有陆地区域 我们将其称为一座 岛屿 如果一座岛屿 完全 由水域包围 即陆
  • AJAX异步请求&JSON数据格式

    目录 前言 1 AJAX的实现方式 1 1原生的js实现方式 1 2JQuery实现方式 2 1语法 3 JSON数据和Java对象的相互转换 3 1将JSON转换为Java对象 3 2将Java对象转换为JSON 前言 AJAX ASyn
  • 重启虚拟机后dhclient进程未运行解决办法

    https www cnblogs com jiawei2527 p 10778938 html 问题分析 重启虚拟机后 dhclient进程未运行的根因通常为 1 NetworkManager未开启自启动导致的dhclient进程未运行
  • 计算机组成原理--基于Logisim的奇偶校验电路实验的应用(超详细/设计/实验/作业/练习)

    目录 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logisim的奇偶校验电路实验 一 前言 二 环境与设备 三 内容 四 结果与分析 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logi
  • 实现整数堆栈算法的Java程序

    实现整数堆栈算法的Java程序 堆栈 Stack 是一种常用的数据结构 它遵循先进后出 Last In First Out LIFO 的原则 在Java中 我们可以使用整数堆栈算法来实现一个基本的堆栈数据结构 本文将演示如何使用Java编写
  • vue 图片下载到本地,图片保存到本地

    必须同源 访问的网站域名与服务器域名一致 才能下载 downs var alink document createElement a alink href this shop shoppic url alink download pic 图
  • 没有libelf.h libdw.h

    执行如下安装 apt get install libdw dev
  • editview只输入英文_android使用正则表达式控制EditText只能输入数字和英文

    在方法中加载 edt addTextChangedListener new SearchWather edt 新建类 SearchWather java import java util regex Matcher import java
  • 企业微信获取用户信息响应40029(微信小程序与公众号出现类似问题应该是同样的原因)

    企业微信获取用户信息响应40029 在对接企业微信的时候需要通过code去获取userId 但是会返回40029的error码 经过测试与验证原因是访问地址 https open weixin qq com connect oauth2 a
  • 【Vue学习笔记】export ‘default‘ (imported as ‘Vue‘) was not found in ‘vue‘问题解决

    export default imported as Vue was not found in vue 安装了5 几的vuecli src plugins element js里用到了 import Vue from vue npm run
  • 绝无仅有的SpringBoot+Vue前后端分离项目《盈利宝》

    每天都在制造矛盾并解决矛盾的路上 程序员的主要矛盾 不是书和资料多不多的矛盾 而是学着学着发现知识又更新了 时间就像一台永不停歇的永动机 向前不停地运作 年初的flag渐行渐远 管他前浪 还是后浪 能浪的浪 才是好浪 今天带你解锁 Spri
  • gitlab操作

    1 配置ssh 点击访问 2 创建新分支与切换新分支 git branch 新分支名 创建 git checkout 新分支名 切换到新分支 3 查看当前分支 git branch 所指的就是当前所在分支 4 本地删除文件后与远程git同步
  • JConsole&VisualVM监控总结

    简介 JConsole 以下写作jconsole VisualVM 以下写作jvisualvm 都是比较好的JVM调优工具 且都为JDK自带 可在命令行直接启动 监控示例 Server端 需要监控的主机 配置 设置临时JAVA参数 expo
  • 管理用户账号

    目录 Windows平台用户账号介绍 管理本地用户账号 用户配置文件 演示配置漫游用户配置文件 强制漫游配置说明 管理本地组 组的操作 案例分析 Windows平台用户账号介绍 在Windows系统中 每当用户需要登录到系统时就需要对用户进
  • 复杂grid 支持多表头,固定表头,冻结列,合并行

    该组件支持三种渲染形态 因为有些简单的表格没必要去做太复杂的处理 支持自适应页面宽度和可以设置固定宽度 理论上是所有浏览器都支持 但是因为我引用了一些工具类 处理数组的filter map 所以向前兼容可以自己实现这些方法 第一种 不需要固
  • Ubuntu系统下查看显卡相关信息

    查看显卡信息 root ubuntu home ubuntu lspci grep i vga 02 00 0 VGA compatible controller NVIDIA Corporation GM200 GeForce GTX T
  • Java将文件转换成二维码

    生成二维码主要代码为在步骤1 2中 下边后续步骤3 4 5涉及到具体的业务 要是用该工具类时需要拷贝前两个步骤代码即可 1 在项目pom xml文件中引入生成二维码的第三方依赖