zoukankan      html  css  js  c++  java
  • 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();
                }
            }
        }
    

      

    效果:

     

  • 相关阅读:
    ZOJ 3332 Strange Country II
    ZOJ 3331 Process the Tasks(双塔DP)
    ZOJ 3326 An Awful Problem(模拟)
    HDU 1796 How many integers can you find(容斥原理)
    HDU 4059 The Boss on Mars(容斥原理)
    HDU 4135 Co-prime(容斥原理)
    HDU 5677 ztr loves substring(回文串加多重背包)
    CodeForces 668B Little Artem and Dance
    CodeForces 667A Pouring Rain
    Java实现 LeetCode 764 最大加号标志(暴力递推)
  • 原文地址:https://www.cnblogs.com/e206842/p/12923655.html
Copyright © 2011-2022 走看看