这个没啥好说的俩类就完事,随便写写,做个记录吧

直接上代码,三步完成

第一步:引Maven的jar包

 <dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.3.1</version></dependency>

第二步:添加工具类

package com.hnyfkj.agriculturalpark.biz.code;import java.awt.BasicStroke;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Shape;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.OutputStream;
import java.util.Hashtable;import javax.imageio.ImageIO;import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;public class QRCodeUtil {private static final String CHARSET = "utf-8";private static final String FORMAT_NAME = "JPG";// 二维码尺寸private static final int QRCODE_SIZE = 1000;// LOGO宽度private static final int WIDTH = 60;// LOGO高度private static final int HEIGHT = 60;private static BufferedImage createImage(String content, String imgPath, boolean needCompress) throws Exception {@SuppressWarnings("rawtypes")Hashtable<EncodeHintType, Comparable> hints = new Hashtable<EncodeHintType, Comparable>();hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);hints.put(EncodeHintType.CHARACTER_SET, CHARSET);hints.put(EncodeHintType.MARGIN, 1);BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE,hints);int width = bitMatrix.getWidth();int height = bitMatrix.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, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);}}if (imgPath == null || "".equals(imgPath)) {return image;}// 插入图片QRCodeUtil.insertImage(image, imgPath, needCompress);return image;}private static void insertImage(BufferedImage source, String imgPath, boolean needCompress) throws Exception {File file = new File(imgPath);if (!file.exists()) {System.err.println("" + imgPath + "   该文件不存在!");return;}Image src = ImageIO.read(new File(imgPath));int width = src.getWidth(null);int height = src.getHeight(null);if (needCompress) { // 压缩LOGOif (width > WIDTH) {width = WIDTH;}if (height > HEIGHT) {height = HEIGHT;}Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH);BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics g = tag.getGraphics();g.drawImage(image, 0, 0, null); // 绘制缩小后的图g.dispose();src = image;}// 插入LOGOGraphics2D graph = source.createGraphics();int x = (QRCODE_SIZE - width) / 2;int y = (QRCODE_SIZE - height) / 2;graph.drawImage(src, x, y, width, height, null);Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6);graph.setStroke(new BasicStroke(3f));graph.draw(shape);graph.dispose();}public static void encode(String content, String imgPath, String destPath, boolean needCompress) throws Exception {BufferedImage image = QRCodeUtil.createImage(content, imgPath, needCompress);mkdirs(destPath);// String file = new Random().nextInt(99999999)+".jpg";// ImageIO.write(image, FORMAT_NAME, new File(destPath+"/"+file));ImageIO.write(image, FORMAT_NAME, new File(destPath));}public static BufferedImage encode(String content, String imgPath, boolean needCompress) throws Exception {BufferedImage image = QRCodeUtil.createImage(content, imgPath, needCompress);return image;}public static void mkdirs(String destPath) {File file = new File(destPath);// 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)if (!file.exists() && !file.isDirectory()) {file.mkdirs();}}public static void encode(String content, String imgPath, String destPath) throws Exception {QRCodeUtil.encode(content, imgPath, destPath, false);}// 被注释的方法/** public static void encode(String content, String destPath, boolean* needCompress) throws Exception { QRCodeUtil.encode(content, null,* destPath, needCompress); }*/public static void encode(String content, String destPath) throws Exception {QRCodeUtil.encode(content, null, destPath, false);}public static void encode(String content, String imgPath, OutputStream output, boolean needCompress)throws Exception {BufferedImage image = QRCodeUtil.createImage(content, imgPath, needCompress);ImageIO.write(image, FORMAT_NAME, output);}public static void encode(String content, OutputStream output) throws Exception {QRCodeUtil.encode(content, null, output, false);}public static String decode(File file) throws Exception {BufferedImage image;image = ImageIO.read(file);if (image == null) {return null;}BufferedImageLuminanceSource source = new BufferedImageLuminanceSource(image);BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));Result result;Hashtable<DecodeHintType, String> hints = new Hashtable<DecodeHintType, String>();hints.put(DecodeHintType.CHARACTER_SET, CHARSET);result = new MultiFormatReader().decode(bitmap, hints);String resultStr = result.getText();return resultStr;}public static String decode(String path) throws Exception {return QRCodeUtil.decode(new File(path));}
}

第三步:引用工具类中的生成方法

package com.hnyfkj.agriculturalpark.biz.code.controller;import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import com.hnyfkj.agriculturalpark.biz.assetsinfo.service.AssetsInfoService;
import com.hnyfkj.agriculturalpark.biz.code.QRCodeUtil;
import com.hnyfkj.agriculturalpark.biz.tracesourcelist.entity.TracesourceListEntity;
import com.hnyfkj.agriculturalpark.biz.tracesourcelist.service.TracesourceListService;import io.swagger.annotations.Api;@RestController
@RequestMapping("/down")
@Api(tags = { "资产信息列表导出" })
public class ErWeiMazipController {@Autowiredprivate TracesourceListService tracesourceListService;/*** data为链接,用 , 分割* * @param response* @param data* @throws Exception*/@RequestMapping("/downloadAllQr")public void download(HttpServletResponse response, String traceSourceBatch) throws Exception {ZipOutputStream zos = null;String downloadFilename = "追溯码";// 转换中文否则可能会产生乱码downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");// 指明response的返回对象是文件流response.setContentType("application/octet-stream");// 设置在下载框默认显示的文件名response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename + ".zip");String url = "http://xxxx";// 根据溯源码批次查找List<TracesourceListEntity> tracesourceListEntity = tracesourceListService.findListByTrace(traceSourceBatch);// 组装Urlzos = new ZipOutputStream(response.getOutputStream());// 循环遍历组装for (TracesourceListEntity tracesourceList : tracesourceListEntity) {String uu = url + "?product_batch=" + tracesourceList.getProductBatch() + "&trace_source_id="+ tracesourceList.getTraceSourceId();zos.putNextEntry(new ZipEntry(tracesourceList.getTraceSourceId() + ".png"));ImageIO.write(QRCodeUtil.encode(uu, "D:/logo.png", true), "jpg", zos);}zos.flush();zos.close();}}

完事了,自己测吧,具体扫码出现的数据根据自己业务来

简单的拼接成url能扫出来就完事了

前人种树后人乘凉,你们慢慢乘凉哈

SpringBoot+zxing批量生成二维码_南国相关推荐

  1. springboot+hutool批量生成二维码压缩导出

    文章目录 1.引入依赖 2.测试编码 3.批量生成 4.解析excel 5.批量图片压缩 6.上传excel直接将输出流转成压缩包 1.引入依赖 <!-- 生成二维码依赖--><de ...

  2. 使用zxing批量生成二维码立牌

    使用zxing批量在做好的立牌背景图的指定位置上,把指定的文本内容(链接地址.文本等)生成二维码并放在该位置, 最后加上立牌编号. 步骤: 1).做好背景图,如下图: 2).生成二维码Buffered ...

  3. 前端批量生成二维码并打包下载

    前端批量生成二维码并打包下载 项目中遇到一个紧急需求在没有后端配合的情况下,前端独自实现生成二维码并打包下载 生成二维码:下载 qrcodejs2 批量打包下载:下载 JSZip 和 FileSave ...

  4. TXT文件批量生成二维码

    大多数人在制作标签时,数据库文件都选择Excel文件,其实TXT文件在作为数据库时,也是可以制作各种可变数据标签的,比如批量生成二维码,条形码等.下面我们就使用TXT文件作为数据库批量生成二维码. 打 ...

  5. 读取excel批量生成二维码

    昨天工作需要,让生成二维码,让用草料生成,就需要一个个的复制粘贴,有点麻烦.关键是量特别大,如果传统的复制粘贴要很长时间才可以. 后来想到用程序生成.于是百度了一下生成二维码的方法,别说还很简单,把代 ...

  6. 速码工具箱,Excel批量生成二维码,瞬间搞定!

    之前写过一篇文章,<批量生成二维码>,当时介绍了VBA中两种生成二维码的方式,一种需要引用QRmaker控件,一种是纯代码生成的方式.但是这两种方式都有一个最大的bug--不支持64位. ...

  7. 如何从Excel表格导入数据批量生成二维码

    目前二维码应用渐趋广泛,二维码具有储存量大.保密性高.追踪性高.抗损性强.备援性大.成本便宜等特性,这些特性特别适用于表单.安全保密.追踪.证照.存货盘点.资料备援等方面.那么我们怎么用条码打印软件从 ...

  8. 2023最新在线批量生成二维码网站源码+全开源/UI简约

    正文: 在线批量生成二维码网站源码,直接拖服务器就能运行php7.3,程序采用本地接口支持生成接口,生成后自动保存,生成后压缩保存,具体功能可以自己测试,源码无加密. 程序: wwxhes.lanzo ...

  9. 通过数据库批量生成二维码

    我们在使用条码标签软件时,如果需要批量生成二维码,可以通过添加数据库的方式来操作.而且条码软件支持的数据库文件类型也很广泛,可以满足不同用户的需求.下面我们就用一个例子来详细介绍,比如我们这里有一个E ...

  10. 批量生成二维码系统源码 电脑+手机自适应代码 含安装搭建教程

    分享一个批量生成二维码系统源码,一键批量生成包括网址,数字,文字,视频等各种形式的二维码,自动生成压缩包,一键下载.电脑+手机自适应代码,含安装搭建教程. 批量生成二维码系统源码帮助用户快速生成二维码 ...

最新文章

  1. pycharm安装pytorch报错 提示系列问题 torch 包找不到因为pip版本低,结果升级了pip从19.3到20.2 4又提示高版不支持torch安装
  2. php 执行效率,PHP 函数执行效率的小比较
  3. C#读写word,文段及表格
  4. 【JavaWeb】数据库基础复习
  5. Maven_生产环境下开发对Maven的需求
  6. 跑步(【CCF】NOI Online能力测试 入门组第二题)
  7. 2017.12.1T19_B2_6
  8. JSTL不同版本和EL表达式的关联
  9. 278.第一个错误版本(力扣leetcode) 博主可答疑该问题
  10. java pdf 加水印
  11. android面试题之三(红黑联盟)
  12. Ceph Async RDMA网络通信性能优化
  13. C++指针(pointer)
  14. 干货干货~C语言版学生成绩管理系统【数据结构课程设计,百行代码实现功能强化版(内附源码)】
  15. vue 圆形 水波_vuejs 水波纹框架
  16. HTML中input输入框动态模糊匹配
  17. 解析android:ellipsize=end属性无效的情况
  18. 怎样把多个TXT文件合成为一个TXT文件
  19. RNN中BPTT的推导和可能的问题
  20. 统计单词频率 java_java 统计一个(英文)文本中频率最高的10个单词

热门文章

  1. win10共享其它计算机文件,两台win10间如何文件共享
  2. xp计算机内存条启动,xp系统出现“xx内存不能为read或written”怎么解决
  3. Java编程练习题:Demo17-Demo32
  4. UltraCompare破解流程
  5. JAVA 毕业设计 论文题目参考
  6. c语言:输出一个菱形图案
  7. Haproxy 使用 sni 配置 https 多域名代理 SSL_ERROR_RX_RECORD_TOO_LONG
  8. 浏览器播放m3u8文件
  9. python之二进制
  10. 网页配色网页设计常用色彩搭配表 《配色表》