springboot+hutool批量生成二维码压缩导出
文章目录
- 1.引入依赖
- 2.测试编码
- 3.批量生成
- 4.解析excel
- 5.批量图片压缩
- 6.上传excel直接将输出流转成压缩包
1.引入依赖
<!-- 生成二维码依赖--><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version></dependency><!-- 工具包--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.14</version></dependency>
2.测试编码
QrConfig config = new QrConfig(300, 300);
// 设置边距,既二维码和背景之间的边距config.setMargin(3);
// 设置前景色,既二维码颜色(青色)config.setForeColor(Color.CYAN);
// 设置背景色(灰色)config.setBackColor(Color.GRAY);
// 生成二维码到文件,也可以到流QrCodeUtil.generate("12345678", config, FileUtil.file("E:/image/12345678.jpg"));
3.批量生成
然而我们要批量生成不可能完全靠手输,接下来实现导入excel表批量生成。
需要引入poi依赖:
4.解析excel
<!-- office文件处理依赖--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.0.0</version></dependency>
准备好一份表格:
测试读取:
5.批量图片压缩
单张图片输出或下载也不方便,这时候我们要用到压缩
批量导出压缩文件
代码如下
/*** 将文件打包成zip并下载*/@PostMapping(value = "xiazai",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)@ApiOperation("导出压缩包")public void download(HttpServletResponse response) throws IOException {response.setHeader("content-type", "application/octet-stream");response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");response.setContentType("application/octet-stream");response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=download.zip");CompressUtil.createArchiver(CharsetUtil.CHARSET_UTF_8, ArchiveStreamFactory.ZIP,response.getOutputStream()).add(FileUtil.file("E:/image"));
// ZipUtils.pngZip(response.getOutputStream(), qrImages);}
6.上传excel直接将输出流转成压缩包
尝试上传excel生成二维码压缩包并下载(不会在服务器生成文件)
代码如下:
/*** 图片内容与名字*/
@Data
public class QrImage {private byte[] bytes;private String name;
}
/*** 将生成的二维码字节流压缩导出* @param outputStream* @param qrImages*/public static void pngZip(OutputStream outputStream,List<QrImage> qrImages) {//Zip输出流ZipOutputStream zipOutputStream = null;try {zipOutputStream = new ZipOutputStream(outputStream);for (QrImage file : qrImages) {ZipEntry zipEntry = new ZipEntry(file.getName()+".png");zipOutputStream.putNextEntry(zipEntry);//写数据zipOutputStream.write(file.getBytes(), 0, file.getBytes().length);zipOutputStream.flush();}zipOutputStream.flush();zipOutputStream.close();} catch (IOException e) {e.printStackTrace();} finally {// 关闭流try {if (zipOutputStream != null) {zipOutputStream.close();}if (outputStream != null) {outputStream.close();}} catch (IOException e) {e.printStackTrace();}}}
/*** 将文件打包成zip并下载*/@PostMapping(value = "xiazai",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)@ApiImplicitParam(name = "excelFile",value = "excel导入",required = true,dataType="MultipartFile",allowMultiple = true,paramType = "query")@ApiOperation("导出压缩包")public void download(@RequestParam("excelFile") MultipartFile file, HttpServletResponse response) throws IOException {//读取excelExcelReader reader = ExcelUtil.getReader(file.getInputStream());List<List<Object>> lists = reader.read();//删除标题lists.remove(0);//批量生成二维码List<QrImage> qrImages = create(lists);response.setHeader("content-type", "application/octet-stream");response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");response.setContentType("application/octet-stream");response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=download.zip");
// CompressUtil.createArchiver(CharsetUtil.CHARSET_UTF_8, ArchiveStreamFactory.ZIP,response.getOutputStream())
// .add(FileUtil.file("E:/image"));ZipUtils.pngZip(response.getOutputStream(), qrImages);}public List<QrImage> create(List<List<Object>> list) throws FileNotFoundException {QrConfig config = new QrConfig(300, 300);
// 设置边距,既二维码和背景之间的边距config.setMargin(3);
// 设置前景色,既二维码颜色(青色)config.setForeColor(Color.CYAN);
// 设置背景色(灰色)config.setBackColor(Color.GRAY);byte[] bytes=null;List<QrImage> qrImages = new ArrayList<>();QrImage qrImage;
// 生成二维码到文件,也可以到流for (List<Object> objects : list) {//将首列作为二维码内容qrImage = new QrImage();//将首列作为二维码内容bytes = QrCodeUtil.generatePng(objects.get(0).toString(),config.setImg("E:/image/logo.png"));qrImage.setBytes(bytes);qrImage.setName(objects.get(0).toString());qrImages.add(qrImage);}return qrImages;}
springboot+hutool批量生成二维码压缩导出相关推荐
- 2023最新在线批量生成二维码网站源码+全开源/UI简约
正文: 在线批量生成二维码网站源码,直接拖服务器就能运行php7.3,程序采用本地接口支持生成接口,生成后自动保存,生成后压缩保存,具体功能可以自己测试,源码无加密. 程序: wwxhes.lanzo ...
- vue批量生成二维码,打印生成的二维码,并批量下载生成的二维码,qrcode
通过使用 qrcode 生成二维码, 使用 jszip 打包批量二维码文件, 使用 file-saver 下载打包好的zip文件, 使用 vue-print-nb 打印生成的二维码 生成二维码: 打印 ...
- 前端批量生成二维码并打包下载
前端批量生成二维码并打包下载 项目中遇到一个紧急需求在没有后端配合的情况下,前端独自实现生成二维码并打包下载 生成二维码:下载 qrcodejs2 批量打包下载:下载 JSZip 和 FileSave ...
- TXT文件批量生成二维码
大多数人在制作标签时,数据库文件都选择Excel文件,其实TXT文件在作为数据库时,也是可以制作各种可变数据标签的,比如批量生成二维码,条形码等.下面我们就使用TXT文件作为数据库批量生成二维码. 打 ...
- 读取excel批量生成二维码
昨天工作需要,让生成二维码,让用草料生成,就需要一个个的复制粘贴,有点麻烦.关键是量特别大,如果传统的复制粘贴要很长时间才可以. 后来想到用程序生成.于是百度了一下生成二维码的方法,别说还很简单,把代 ...
- 速码工具箱,Excel批量生成二维码,瞬间搞定!
之前写过一篇文章,<批量生成二维码>,当时介绍了VBA中两种生成二维码的方式,一种需要引用QRmaker控件,一种是纯代码生成的方式.但是这两种方式都有一个最大的bug--不支持64位. ...
- 如何从Excel表格导入数据批量生成二维码
目前二维码应用渐趋广泛,二维码具有储存量大.保密性高.追踪性高.抗损性强.备援性大.成本便宜等特性,这些特性特别适用于表单.安全保密.追踪.证照.存货盘点.资料备援等方面.那么我们怎么用条码打印软件从 ...
- 通过数据库批量生成二维码
我们在使用条码标签软件时,如果需要批量生成二维码,可以通过添加数据库的方式来操作.而且条码软件支持的数据库文件类型也很广泛,可以满足不同用户的需求.下面我们就用一个例子来详细介绍,比如我们这里有一个E ...
- 批量生成二维码系统源码 电脑+手机自适应代码 含安装搭建教程
分享一个批量生成二维码系统源码,一键批量生成包括网址,数字,文字,视频等各种形式的二维码,自动生成压缩包,一键下载.电脑+手机自适应代码,含安装搭建教程. 批量生成二维码系统源码帮助用户快速生成二维码 ...
最新文章
- 嵌入式传感器是智能移动增长的关键
- 第6章——广度优先搜索
- 双非高校浙工大,一年2项研究上Nature,校友纷纷打Call:欠一个211名头
- python 绘制柱状图-「Python」python绘制图表
- Android Virtual Device(AVD)屏幕大小调整
- 提单丢失了,怎么办?
- hashlib 加密
- Python程序开发——第六章 类与对象
- [Ubuntu] Simple way to pass passwords on a shell script
- 计算机的只读储存器,只读存储器
- Spark源码走读1——RDD
- 入选 Gartner 魔力象限,剖析华为云 GaussDB 数据库演进之路
- linux shell 判断ELF文件,linux file命令查看elf文件信息
- tinymce上传图片php,在angular2中使用tinymce富文本编辑,并实现上传图片功能
- 晶振电路电容选取的计算方法
- SpringBoot exclude的使用
- 再见python你好go语言_再见,Python。你好,Go语言。
- “如果不是生活所迫,谁又愿意拿青春赌明天呢”一位年新30w测试工程师的自白
- 名帖366 鲜于枢 草书《韩愈石鼓歌》
- axis2 webService开发 附深入理解 Java 垃圾回收机制
热门文章
- mysql数据库查询工具''_数据库查询工具
- Fatal error loading the DB: Permission denied. Exiting.
- 三运放差分放大电路分析_三运放组成的差分放大器电路图及特点
- GitHub 上受欢迎的 Android UI Library(part_one)
- rm -rf是什么意思?
- 人生若只如初见服务器维护,「北京服务器」人生若只如初见
- 川藏北线-成都老茶馆叹茶
- MySQL索引及视图
- 腾讯云服务器登录宝塔面板命令
- h5 换脸 php,DIY海报H5案例|换脸show颜值