• java+layui使用zxing生成二维码


    1.pom.xml导入zxing包

            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>core</artifactId>
                <version>3.2.1</version>
            </dependency>
    

    2.按钮单击后生成二维码弹框

    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="qrcode">查看二维码</a>
    

    3.layui代码

       /**
        * 点击查看二维码
        *
        * @param data 点击按钮时候的行数据
        */
        xx.openQrcode = function (data) {
            func.open({
                title: '查看二维码',
                content: Feng.ctxPath + '/xx/qrcode?pjid=' + data.id,
                tableId: xx.tableId
            });
        };
    

    4.java代码返回html

     /**
         * 二维码弹框
         *
         * @author linan
         * @Date 2020-03-09
         */
        @RequestMapping("/qrcode")
        public String qrcode(String pjid, Model model) {
            model.addAttribute("item",pjid);
            return PREFIX + "/qrcode.html";
        }
    

    5.qrcode.html

    @layout("/common/_container.html",{js:["/assets/jnProject/jnProject.js"],css:["/assets/jnProject/qrcode.css"]}){
    
    
    
    <div class="layui-col-sm12 layui-col-md6 layui-col-sm-offset0 layui-col-md-offset3" style="padding: 20px; background-color: #F2F2F2;margin-top:20vh">
        <div class="layui-row layui-col-space15">
            <div class="layui-col-sm12 layui-col-md3">
                <div class="layui-card"  style="height: 170px;">
                    <div class="layui-card-header"><i class="layui-icon layui-icon-cols"></i>二维码</div>
                    <div class="layui-card-body">
                        <img
                                id="qr"
                                style=" 100%;margin-top: 17px"
                                src="${ctxPath}/xx/jnProject_qr/${item}"
                        />
                    </div>
                </div>
            </div>
            <div class="layui-col-sm12 layui-col-md9">
                <div class="layui-card">
                    <div class="layui-card-header"><i class="layui-icon layui-icon-link"></i>链接</div>
                    <div class="layui-card-body">
                        <div class="layui-form-item">
                            <input
                                    id="url"
                                    type="text"
                                    value="${ctxPath}/xx/add?id=${item}"
                                    class="layui-input"
                            />
                        </div>
                        <div class="layui-form-item">
                            <button id="copy" class="layui-btn" >复制</button><button id="open" class="layui-btn" >打开</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    @}
    

    6.image访问地址生成二维码

    /**
         * 查看项目二维码
         */
        @RequestMapping("/jnProject_qr/{id}")
        public void deptQr(@PathVariable Long  id, HttpServletResponse resp) throws IOException {
            ServletOutputStream stream = null;
            String qrRedirec="http://xxx";//二维码访问链接地址
            try {
                stream = resp.getOutputStream();
                Map<EncodeHintType, Object> hints = new HashMap<>();
                //编码
                hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
                //边框距
                hints.put(EncodeHintType.MARGIN, 0);
                QRCodeWriter qrCodeWriter = new QRCodeWriter();
                JnProject jnProject = this.jnProjectService.getById(id);
                String content=qrRedirec+"?id="+id;
                BitMatrix bm = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, 500, 500, hints);
                MatrixToImageWriter.writeToStream(bm, "png", stream,"");
            } catch (Exception e) {
               // log.error("二维码生成异常:{}",e.fillInStackTrace());
               // throw new GunsException(GunsExceptionEnum.valueOf("审核无效"));
                e.printStackTrace();
            } finally {
                if (stream != null) {
                    stream.flush();
                    stream.close();
                }
            }
        }
    

      

    效果:

     

  • 相关阅读:
    分享的选择
    @contextmanager 另外一种实现上下文的方法(含yield 生成器)
    Linux ☞ Good good study,day day up
    Linux常用命令
    python 新手遇到的问题
    Pyqt 基础功能
    redis安装使用
    python 对任意文件(jpg,png,mp3,mp4)base64的编码解码
    PHP7.* AES的加密解密
    Ubuntu宝塔面板设置网站 Apache Server API为Apache 2.0 Handler模式
  • 原文地址:https://www.cnblogs.com/e206842/p/12923655.html
Copyright © 2020-2023  润新知