千家信息网

springboot+hutool如何批量生成二维码压缩导出功能

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍springboot+hutool如何批量生成二维码压缩导出功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.引入依赖 com.google.zxing core 3.4.1 cn.hutool hutool-all 5.7.14

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

                    org.apache.poi            poi-ooxml            5.0.0        

准备好一份表格:

测试读取:


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生成二维码压缩包并下载(不会在服务器生成文件)

代码如下:

/** * 图片内容与名字 */@Datapublic class QrImage {    private byte[] bytes;    private String name;}
 /**     * 将生成的二维码字节流压缩导出     * @param outputStream     * @param qrImages     */    public static void pngZip(OutputStream outputStream,List 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 {        //读取excel        ExcelReader reader = ExcelUtil.getReader(file.getInputStream());        List> lists = reader.read();        //删除标题        lists.remove(0);        //批量生成二维码        List 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 create(List> list) throws FileNotFoundException {        QrConfig config = new QrConfig(300, 300);// 设置边距,既二维码和背景之间的边距        config.setMargin(3);// 设置前景色,既二维码颜色(青色)        config.setForeColor(Color.CYAN);// 设置背景色(灰色)        config.setBackColor(Color.GRAY);        byte[] bytes=null;        List qrImages = new ArrayList<>();        QrImage qrImage;// 生成二维码到文件,也可以到流        for (List 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如何批量生成二维码压缩导出功能"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

二维 二维码 生成 文件 内容 背景 图片 输出 功能 之间 代码 景色 灰色 篇文章 青色 颜色 测试 接下来 价值 兴趣 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 滨州市网络安全知识在线 天马网络技术有限公司招聘 网络安全生态的本体是 仓库erp软件开发方案 怎么查看火炬之光登陆过的服务器 网络安全购买设备申请资金 公司不给直接修改数据库结构 网络安全宣传工作的目标是 数据库管理师认证 美国服务器ip 数据库日期格式化 内蒙古智汇互联网络科技有限公司 命令行连接外部数据库 360 软件开发者 绝地求生测试服服务器加载失败 软件开发企业增值税小规模 校园网络安全教育开展情况 成安网络安全行业 康耐视软件开发用什么语言 法律数据库上热搜 南京营销软件开发一体化 济南百维网络技术有限公司 虹口区个性化软件开发值得推荐 网络安全证书无效不能上网 密钥管理服务器计算机名 简单的软件开发进度表 成都软件开发培训中心 黑毒资源网-黑毒网络技术团队 滨州企业诚信积分管理软件开发 mimo无线网络技术
0