SpringBoot 二维码生成
一、基于Google开发工具包ZXing生成二维码
1、引入需要的依赖
<!-- zxing生成二维码 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency> <dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.3</version>
</dependency>
2.具体代码实现
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import java.io.IOException;
import java.nio.file.Path;
import static java.nio.file.FileSystems.getDefault; /**
* @project
* @Description
* @Author songwp
* @Date 2022/8/25 11:07
* @Version 1.0.0
**/
public class QRCodeGenerator { /*
* text - 内容
* width - 二维码宽度
* height - 二维码高度
* filePath - 二维码存放位置
*/
public static void generateQRCodeImage(String text, int width, int height, String filePath)throws WriterException, IOException {
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
Path path = getDefault().getPath(filePath);
MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
} /*
* 测试方法
* */
public static void main(String[] args) {
try {
generateQRCodeImage("https://www.cnblogs.com/songweipeng'", 350, 350, "D:\\photo\\QRTest.png");
} catch (WriterException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.效果显示

二、基于开源的Hutool工具生成二维码
1、引入需要的依赖
<!--二维码开发工具集-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.6.10</version>
</dependency> <!-- zxing生成二维码 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency> <dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.3</version>
</dependency>
2.利用Bean的形式显示配置并注入QrConfig,如下代码所示:
import cn.hutool.extra.qrcode.QrConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import java.awt.*; /**
* @project
* @Description
* @Author songwp
* @Date 2022/8/25 11:21
* @Version 1.0.0
**/
@Configuration
public class QRCode {
@Bean
public QrConfig qrConfig(){
QrConfig qrConfig=new QrConfig();
qrConfig.setBackColor(Color.white.getRGB());
qrConfig.setForeColor(Color.black.getRGB());
return qrConfig;
}
}
3.编写业务实现类
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import org.springframework.stereotype.Service; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException; /**
* @project
* @Description
* @Author songwp
* @Date 2022/8/25 11:22
* @Version 1.0.0
**/
@Service
public class QRService {
@Resource
private QrConfig qrconig;
public void generateFile(String content, File file){
//生成到本地文件
QrCodeUtil.generate(content, qrconig, file);
}
//输出到流
public void generateStream(String content, HttpServletResponse response) throws IOException {
QrCodeUtil.generate(content,qrconig,"png",response.getOutputStream());
}
}
4.编写QRController控制器类中进行调用,如下代码所示:
import com.songwp.service.impl.QRService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @project
* @Description
* @Author songwp
* @Date 2022/8/24 16:11
* @Version 1.0.0
**/
@RestController
@RequestMapping("/user")
public class UserController{
@Autowired
private QRService qrService;
@RequestMapping("/qrCode")
public void generateV3(String content, HttpServletResponse servletResponse) throws IOException {
qrService.generateStream(content,servletResponse);
}
5.postman调用测试:

SpringBoot 二维码生成的更多相关文章
- springboot微信支付,支付二维码生成
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1 微信扫码支付开发者文档,里面会有支付流程的教程 接口链接 URL地址:htt ...
- java 二维码生成(可带图片)springboot版
本文(2019年6月29日 飞快的蜗牛博客) 有时候,男人和女人是两个完全不同的世界,男人的玩笑和女人的玩笑也完全是两码事,爱的人完全不了解你,你也不要指望一个女人了解你,所以男的不是要求别人怎么样, ...
- [开源]C#二维码生成解析工具,可添加自定义Logo
二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字 ...
- 聊聊 Web 项目二维码生成的最佳姿势
在设计和实现的过程之后,你永远不知道部署上去的程序会已什么样的姿势运行. 本篇借一次生成二维码逻辑的不同实现,阐述 Web 项目中二维码生成的正确姿势. 文中如有批量,欢迎各位看客老爷拍砖.试运行前5 ...
- .NET 二维码生成(ThoughtWorks.QRCode)
引用ThoughtWorks.QRCode.dll (源代码里有) 1.简单二维码生成及解码代码: //生成二维码方法一 private void CreateCode_Simple(string n ...
- iOS开发 二维码生成
基于libqrencode的二维码生成 + (void)drawQRCode:(QRcode *)code context:(CGContextRef)ctx size:(CGFloat)size { ...
- PHP二维码生成的方法(google APi,PHP类库,libqrencode等)
原文地址: http://blog.csdn.net/liuxinmingcode/article/details/7910975 ================================== ...
- Android 二维码 生成和识别(附Demo源码)
今天讲一下目前移动领域很常用的技术——二维码.现在大街小巷.各大网站都有二维码的踪迹,不管是IOS. Android.WP都有相关支持的软件.之前我就想了解二维码是如何工作,最近因为工作需要使用相关技 ...
- Chrome浏览器二维码生成插件
猛击就可以使用啦->>>猛击使用 源码如下: 源码打包 源码: jquery-2.1.3.min.js jquery.qrcode.min.js https://gith ...
- Android 二维码 生成和识别(转)
原博客地址 :http://www.cnblogs.com/weixing/archive/2013/08/28/3287120.html 还有几个写的也可以参考一下:http://www.itnos ...
随机推荐
- python爬虫配置随机请求头headers伪装User-Agent
python爬虫随机headers伪装fake_useragent fake_useragent 库 调用方法ua.random可以随机返回一个headers(User-Agent) from fak ...
- IPv4地址的结构体与网络字节序
IPv4地址的结构体 /* Fixed-size types, underlying types depend on word size and compiler. */ typedef signed ...
- 使用labelimg标注数据集
labelimg安装 在cmd命令行中运行如下命令: pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple 数据准备 新建一 ...
- 从零开始写 Docker(十)---实现 mydocker logs 查看容器日志
本文为从零开始写 Docker 系列第十篇,实现类似 docker logs 的功能,使得我们能够查查看容器日志. 完整代码见:https://github.com/lixd/mydocker 欢迎 ...
- Qt调用系统DLL,判断网络连接状态
*: Win32 网络连接 dll 文件名叫:wininet.dll,位置在 C:\WINDOWS\system32 目录下,将 其拷贝到项目工程下. #include <QLibrary> ...
- openGauss中的sequence跟Oracle的sequence有什么区别?
openGauss 中的 sequence 跟 Oracle 的 sequence 有什么区别? openGauss 中也提供了 sequence 序列功能,使用 Oracle 的用户应该都非常喜欢使 ...
- 【直播预告】HarmonyOS 极客松赋能直播第六期:产品创新从哪里来?
- 推荐两款HTTP请求Mock利器
1.背景 在日常测试过程中或者研发开发过程中,目前接口暂时没有开发完成,测试人员又要提前介入接口测试中,测试人员不仅仅只是简单的编写测试用例,也可以通过一些mock的方法进行来提前根据接口测试的情况进 ...
- 重学c#系列——索引器(十)
前言 对于索引器,我们肯定不会陌生.为什么会有索引器这个东西呢?我们发现这东西很像是属性,只是通过索引方式去调用,那就慢慢揭开他的面纱吧. 正文 假设我们要对外暴露一个数组,为了体现其封装性,我们使用 ...
- TypeScript 中接口的理解?应用场景?
一.是什么 「接口」是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的「类」去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法 简单来讲,一个接口所 ...