如何替别人建网站挣钱,什么网站是做电机控制的,深圳公司网页设计推广报价,seo网站外包公司SpringBoot使用Zxing生成二维码 什么是Zxing具体实现1. 在pom文件中导入依赖2. 二维码生成工具类3. 控制层和服务层4. 前端 总结参考 什么是Zxing
ZXing#xff0c;一个支持在图像中解码和生成条形码(如二维码、PDF 417、EAN、UPC、Aztec、Data Matrix、Codabar)的库。ZXing(… SpringBoot使用Zxing生成二维码 什么是Zxing具体实现1. 在pom文件中导入依赖2. 二维码生成工具类3. 控制层和服务层4. 前端 总结参考 什么是Zxing
ZXing一个支持在图像中解码和生成条形码(如二维码、PDF 417、EAN、UPC、Aztec、Data Matrix、Codabar)的库。ZXing(“zebra crossing”)是一个开源的、多格式的、用Java实现的一维/二维条码图像处理库具有到其他语言的端口。
具体实现
对于在Spring项目中使用Zxing生成二维码其实比较简单只需要引入依赖然后调用方法并传入需要的参数即可。 最核心的代码就是 QRCodeWriter qrCodeWriternew QRCodeWriter(); bitMatrixqrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints); text 二维码中携带的内容 BarcodeFormat.QR_CODE :是一个枚举值表示二维码Quick Response Code格式 width: 宽 height: 高 hints: 是一个map包含一些其他的设置内容
1. 在pom文件中导入依赖 !-- ZXing二维码 --dependencygroupIdcom.google.zxing/groupIdartifactIdcore/artifactIdversion3.4.1/version /dependencydependencygroupIdcom.google.zxing/groupIdartifactIdjavase/artifactIdversion3.4.1/version/dependency2. 二维码生成工具类
生成的二维码可以输出到本地文件中也可以直接以IO流的形式返回给前端前端再进行二维码的显示。
package com.lixy.sharingcurriculum.util;import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
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 com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.HashMap;public class QRCodeGenerator {/*** 生成二维码输出文件* param text* throws WriterException* throws IOException*/public static void generateQRCodeImage(String text) throws WriterException, IOException {int width 350;int height 350;String filePath C:/Users/li/Pictures/qrtest.png;// 定义二维码的参数HashMapEncodeHintType, ErrorCorrectionLevel hintMap new HashMap();hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); QRCodeWriter qrCodeWriter new QRCodeWriter();BitMatrix bitMatrix qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);Path path FileSystems.getDefault().getPath(filePath);MatrixToImageWriter.writeToPath(bitMatrix, PNG, path);}/*** 生成二维码并以IO流返回* param text* return* throws WriterException*/public static BitMatrix createQRCode(String text) throws IOException {int width200;int height200;HashMapEncodeHintType,Object hints new HashMap();hints.put(EncodeHintType.CHARACTER_SET,UTF-8); //指定字符编码为“utf-8”hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); //指定二维码的纠错等级为中级hints.put(EncodeHintType.MARGIN, 2); //设置图片的边距单位像素非负值BitMatrix bitMatrixnull;try{QRCodeWriter qrCodeWriternew QRCodeWriter();bitMatrixqrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints);}catch (WriterException e){e.printStackTrace();}return bitMatrix;}public static void main(String[] args) {try {generateQRCodeImage(code);} catch (WriterException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}
3. 控制层和服务层
/*** 生成带有课程表信息的二维码*/PostMapping(/generateQRCode)public void generateQRCode(String scheduleid,HttpServletResponse response) throws IOException {//设置响应流信息response.setContentType(image/png);//没有缓存response.setHeader(Pragma, No-cache);response.setHeader(Cache-Control, no-cache);//设置过期的时间戳为0表示立即过期response.setDateHeader(Expire, 0);BitMatrix bitMatrixscheduleService.generateQRCode(scheduleid);OutputStream streamresponse.getOutputStream();MatrixToImageWriter.writeToStream(bitMatrix,png,stream);}/*** 生成带有课程表信息的二维码* return*/Overridepublic BitMatrix generateQRCode(String scheduleid) throws IOException {Schedule schedulescheduleMapper.selectById(scheduleid);//将课表信息转换为json格式String scheduleJson JSON.toJSONString(schedule);return QRCodeGenerator.createQRCode(scheduleJson);}4. 前端
wx.request({url: http://localhost:8080/schedule/generateQRCode?scheduleidthis.data.id,method:POST,responseType: arraybuffer, // 指定返回类型为ArrayBuffersuccess:res{const base64wx.arrayBufferToBase64(res.data);const imagesrcdata:image/png;base64,base64;console.log(二维码url:imagesrc)this.setData({qrCodeImg:imagesrc})}}) view扫描二维码即可导入课表/viewimage src{{qrCodeImg}} modeaspectFit/ 总结
另外还可以使用一些其他的方式生成二维码比如基于开源的Hutool工具生成二维码可以参考SpringBoot系列(22)Java生成二维码的几种实现方式(基于Spring Boot) 也可以直接使用js生成有QRCode.js库可以直接引用。
参考
使用Zxing生成二维码 Java生成二维码并以IO流的形式返回给前端展示(不需写入服务器)以及下载二维码图片