精华内容
下载资源
问答
  • pb生成二维码

    千次下载 热门讨论 2011-11-26 10:21:47
    pb生成二维码源代码 二维码是QR 二维码 QR码是二维条码的一种,QR 来自英文 “Quick Response” 的缩写,即快速反应的意思,源自发明者希望 QR 码可让其内容快速被解码。QR码比普通条码可储存更多资料,亦无需像...
  • 调用第三方api在线生成二维码

    万次阅读 2018-07-26 17:05:07
    我写过一篇文章是java代码后端自己传入链接由本地代码生成二维码图片并保存在本地,今天我们实现调用第三方在线生成二维码 首先我们找到一个在线生成二维码的api接口,因为这样的api接口有许多,这里我提供一个参考...

    我写过一篇文章是java代码后端自己传入链接由本地代码生成二维码图片并保存在本地,今天我们实现调用第三方在线生成二维码

    首先我们找到一个在线生成二维码的api接口,因为这样的api接口有许多,这里我提供一个参考链接接口:

    http://www.liantu.com/pingtai/

    接下来就是实际操作了:

    首先我们准备一个jsp页面操作,页面一般放在WEB—INF下的文件中这里随意不过你的路径一定要看清楚。

    这里的原理是前端页面输入要转换成二维码的连接,因为可能需要将链接保存,或者添加一些其他的属性我们需要走一遍后台从后台传递给前端数据二维码的地址显示。

     

    <%--
      Created by IntelliJ IDEA.
      Date: 2018/7/23
      Time: 13:58
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <script src="/assets/js/jquery.min.js"></script>
    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    
    </head>
    <body>
    <h2>生成二维码</h2>
    <form >
        <table>
            <tr>
                <td>请输入链接:</td>
                <td><input type="text" name="shortUrl" id="shortUrl" value="${qrCode.shortUrl}"></td>
            </tr>
            <tr>
                <img id="imgSrc" src="${qrCode.imgSrc}"/>
    
            </tr>
            <tr>
                <td><input type="button" value="生成二维码" onclick="getQrCode()"></td>
            </tr>
        </table>
    </form>
    </body>
    </html>

     

     

    后台代码:注意:我这里用的是springMVC框架进行页面的请求跳转。如果你不想导包自己搭建环境,你可以参考SpringMVC文件上传直接搭建环境也是很快。地址:https://blog.csdn.net/weixin_41092717/article/details/81080152,自己搭建环境记得配置xml文件和web.xml文件包扫描等。如果不想用框架,使用最原生的servlet+ajax在线生成二维码同样博主的文章中也有地址:

    https://blog.csdn.net/weixin_41092717/article/details/81333211

     

     

    package com.youyuan.qrCode;
    
    import java.io.Serializable;
    
    /**
     * Created  on 2018/7/23.
     * ZCL
     */
    public class QrCode implements Serializable{
        private int qcID;
        private String shortUrl;
        private String imgSrc;
        private String createTime;
    
        public int getQcID() {
            return qcID;
        }
    
        public void setQcID(int qcID) {
            this.qcID = qcID;
        }
    
        public String getShortUrl() {
            return shortUrl;
        }
    
        public void setShortUrl(String shortUrl) {
            this.shortUrl = shortUrl;
        }
    
        public String getImgSrc() {
            return imgSrc;
        }
    
        public void setImgSrc(String imgSrc) {
            this.imgSrc = imgSrc;
        }
    
        public String getCreateTime() {
            return createTime;
        }
    
        public void setCreateTime(String createTime) {
            this.createTime = createTime;
        }
    
        @Override
        public String toString() {
            return "QrCode{" +
                    "qcID=" + qcID +
                    ", shortUrl='" + shortUrl + '\'' +
                    ", imgSrc='" + imgSrc + '\'' +
                    ", createTime='" + createTime + '\'' +
                    '}';
        }
    }
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Created by  on 2018/7/23.
     * ZCL
     */
    @Controller
    @RequestMapping("/qrCode")
    
    public class QrCodeController {
    
        //这是因为页面在WEB-INF下无法直接访问,通过后台跳转到二维码生成页
        @RequestMapping("/getQrcodePage")
        public ModelAndView getQrcodePage(HttpServletRequest request, HttpServletResponse response) throws Exception {
    
            System.out.println("去二维码生成页");
            ModelAndView mv = new ModelAndView();
            try {
                mv.setViewName("/admin/qrCode/qrCode");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return mv;
        }
        @RequestMapping("/getQrCode")
        public ModelAndView getQrCode(HttpServletRequest request, HttpServletResponse response) throws Exception {
            System.out.println("生成二维码页");
            ModelAndView mv = new ModelAndView();
            String shortUrl = request.getParameter("shortUrl");
            String imgSrc = request.getParameter("imgSrc");
            QrCode qrCode = new QrCode();
    
            qrCode.setShortUrl(shortUrl);
            qrCode.setImgSrc("http://qr.liantu.com/api.php?text="+shortUrl);
            //取到数据之后你可以走数据库 dao层进行数据操作  这里随意案例没有走数据库直接返回前端
            System.out.println(qrCode.toString());
            try {
              //如果你没有使用框架返回数据你可以将数据放request.setAttribute("qrCode",qrCode);
              //前台页面同样取到图片路径显示
                mv.setViewName("/admin/qrCode/qrCode");
                mv.addObject("qrCode",qrCode);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return mv;
        }
    }
    

    启动测试:

     如此测试完成,希望能帮助到需要的你。

    版权声明:本文为博主原创文章,转载请说明转载来源。https://blog.csdn.net/weixin_41092717/article/details/81222903

    展开全文
  • 其中,该二维码主要承载了该产品的相关核心信息,比如名称、简介、价格、单位、型号以及使用说明等等,本文将基于Spring Boot介绍两种生成二维码的实现方式,一种是基于Google开发工具包,另一种是基于Hutool来实现...

    原文链接:http://www.fightjava.com/web/index/blog/article/82

    在一些企业级应用系统中,有时候需要为产品或者商品生成特定的专属二维码,以供一些硬件设备或者用户在手机端扫码查看;其中,该二维码主要承载了该产品的相关核心信息,比如名称、简介、价格、单位、型号以及使用说明等等,本文将基于Spring Boot介绍两种生成二维码的实现方式,一种是基于Google开发工具包,另一种是基于Hutool来实现;

     话不多说,咱们直接进入正题~~~

     说起这个二维码,想必诸位小伙伴都比较熟悉,它是信息的一种载体,也是信息的一种表示形式,可以很好的承载、保护想要重点维护的产品相关的核心信息;而在软件开发领域,这种形式愈加常见,因此,还是有必要撸一撸相应的代码的!

     为了方便理解二维码的实际应用场景,debug给诸位举一些例子吧!

    (1)进销存系统 想必大家都听说过,其系统中的商品二维码承载了许多重要、核心的关键信息,比如商品编码、商品名称、规格、型号、单位、作用/使用说明等信息;操作者可以借助硬件设备,如“扫码枪”,通过扫描该二维码后将该商品录入到商品库中;

    (2)再比如溯源系统中的产品,用户可以通过微信等APP中的扫一扫,扫描贴在产品上的二维码,不出片刻即可得到该产品的相关信息,比如产品名称、生源地、简介、价格、生产环境、经手人等信息;

     下面我们将基于Spring Boot,并采用两种方式实现二维码的生成,对于每一种方式还提供两种类型的二维码返回形式,即:物理文件 和 图片响应流

    一、基于Google开发工具包ZXing生成二维码

    (1)首先,需要在pom.xml依赖配置文件中加入该工具包的依赖Jar,如下所示:   

    <!-- zxing生成二维码 -->
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>3.3.3</version>
    </dependency>
    
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>javase</artifactId>
        <version>3.3.3</version>
    </dependency>

    (2)然后,建立一二维码处理工具类QRCodeUtil,其核心代码如下所示:

    /**
     * 二维码工具
     * @Author:debug (SteadyJack)
     * @Link: weixin-> debug0868  qq-> 1948831260
     * @Date: 2020/11/16 22:38
     **/
    public class QRCodeUtil {
        private static final Logger log= LoggerFactory.getLogger(QRCodeUtil.class);
    
        //CODE_WIDTH:二维码宽度,单位像素
        private static final int CODE_WIDTH = 400;
        //CODE_HEIGHT:二维码高度,单位像素
        private static final int CODE_HEIGHT = 400;
        //FRONT_COLOR:二维码前景色,0x000000 表示黑色
        private static final int FRONT_COLOR = 0x000000;
        //BACKGROUND_COLOR:二维码背景色,0xFFFFFF 表示白色
        //演示用 16 进制表示,和前端页面 CSS 的取色是一样的,注意前后景颜色应该对比明显,如常见的黑白
        private static final int BACKGROUND_COLOR = 0xFFFFFF;
    
        public static void createCodeToFile(String content, File codeImgFileSaveDir, String fileName) {
            try {
                if (StringUtils.isBlank(content) || StringUtils.isBlank(fileName)) {
                    return;
                }
                content = content.trim();
                if (codeImgFileSaveDir==null || codeImgFileSaveDir.isFile()) {
                    //二维码图片存在目录为空,默认放在桌面...
                    codeImgFileSaveDir = FileSystemView.getFileSystemView().getHomeDirectory();
                }
                if (!codeImgFileSaveDir.exists()) {
                    //二维码图片存在目录不存在,开始创建...
                    codeImgFileSaveDir.mkdirs();
                }
    
                //核心代码-生成二维码
                BufferedImage bufferedImage = getBufferedImage(content);
    
                File codeImgFile = new File(codeImgFileSaveDir, fileName);
                ImageIO.write(bufferedImage, "png", codeImgFile);
    
                log.info("二维码图片生成成功:" + codeImgFile.getPath());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 生成二维码并输出到输出流, 通常用于输出到网页上进行显示,输出到网页与输出到磁盘上的文件中,区别在于最后一句 ImageIO.write
         * write(RenderedImage im,String formatName,File output):写到文件中
         * write(RenderedImage im,String formatName,OutputStream output):输出到输出流中
         * @param content  :二维码内容
         * @param outputStream :输出流,比如 HttpServletResponse 的 getOutputStream
         */
        public static void createCodeToOutputStream(String content, OutputStream outputStream) {
            try {
                if (StringUtils.isBlank(content)) {
                    return;
                }
                content = content.trim();
                //核心代码-生成二维码
                BufferedImage bufferedImage = getBufferedImage(content);
    
                //区别就是这一句,输出到输出流中,如果第三个参数是 File,则输出到文件中
                ImageIO.write(bufferedImage, "png", outputStream);
    
                log.info("二维码图片生成到输出流成功...");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        //核心代码-生成二维码
        private static BufferedImage getBufferedImage(String content) throws WriterException {
    
            //com.google.zxing.EncodeHintType:编码提示类型,枚举类型
            Map<EncodeHintType, Object> hints = new HashMap();
    
            //EncodeHintType.CHARACTER_SET:设置字符编码类型
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
    
            //EncodeHintType.ERROR_CORRECTION:设置误差校正
            //ErrorCorrectionLevel:误差校正等级,L = ~7% correction、M = ~15% correction、Q = ~25% correction、H = ~30% correction
            //不设置时,默认为 L 等级,等级不一样,生成的图案不同,但扫描的结果是一样的
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
    
            //EncodeHintType.MARGIN:设置二维码边距,单位像素,值越小,二维码距离四周越近
            hints.put(EncodeHintType.MARGIN, 1);
            
            MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
            BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, CODE_WIDTH, CODE_HEIGHT, hints);
            BufferedImage bufferedImage = new BufferedImage(CODE_WIDTH, CODE_HEIGHT, BufferedImage.TYPE_INT_BGR);
            for (int x = 0; x < CODE_WIDTH; x++) {
                for (int y = 0; y < CODE_HEIGHT; y++) {
                    bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? FRONT_COLOR : BACKGROUND_COLOR);
                }
            }
            return bufferedImage;
        }
    }

     上述代码有点多,诸位可以在文末提供的下载地址将其下载下来,并用IDEA等开发工具将其打开,几乎每行代码debug都做了必要的注释,在这里就不赘述了!

     总的来说,上面代码主要包含了两个部分,一部分是将实现如何将信息塞入二维码并将其生成图片存储至物理文件目录下;另一部分是实现如何直接将信息塞入二维码并生成图片最终以图片流的形式将其返回给前端调用端;

    (3)最后,我们需要新建一个QrCodeController控制器类,并在其中创建两个请求方法,用于测试Google ZXing工具包这种方式生成两种类型的二维码是否可行,其代码如下所示:

    @RequestMapping("qr/code")
    public class QrCodeController extends BaseController{
    
        private static final String RootPath="E:\\shFiles\\QRCode";
        private static final String FileFormat=".png";
    
        private static final ThreadLocal<SimpleDateFormat> LOCALDATEFORMAT=ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyyMMddHHmmss"));
    
        //生成二维码并将其存放于本地目录
        @PostMapping("generate/v1")
        public BaseResponse generateV1(String content){
            BaseResponse response=new BaseResponse(StatusCode.Success);
            try {
                final String fileName=LOCALDATEFORMAT.get().format(new Date());
                QRCodeUtil.createCodeToFile(content,new File(RootPath),fileName+FileFormat);
            }catch (Exception e){
                response=new BaseResponse(StatusCode.Fail.getCode(),e.getMessage());
            }
            return response;
        }
    
        //生成二维码并将其返回给前端调用者
        @PostMapping("generate/v2")
        public BaseResponse generateV2(String content,HttpServletResponse servletResponse){
            BaseResponse response=new BaseResponse(StatusCode.Success);
            try {
                QRCodeUtil.createCodeToOutputStream(content,servletResponse.getOutputStream());
    
            }catch (Exception e){
                response=new BaseResponse(StatusCode.Fail.getCode(),e.getMessage());
            }
            return response;
    }
    }

     最后是将该项目运行起来并采用Postman对该接口进行测试,首先是控制器第一个方法接口的测试,其测试结果如下图所示(生成的二维码图片是存放在 E:\\shFiles\\QRCode 中的):

     最后是控制器第二个方法接口的测试,其测试结果如下图所示:

    PS如果不想存储二维码图片到实际的文件目录,则可以采用“图片流”的形式将其返回即可;反之,则可以将生成的二维码图片存储起来并返回该图片的访问链接给到前端(这个就稍微有点麻烦了,既要存储、又要赋予图片的访问域名和链接);具体取舍可以根据实际业务情况来做抉择吧!

    二、基于开源的Hutool工具生成二维码

     下面,debug换一种实现方式,采用目前比较知名、流行的开源工具Hutool加以实现,同样的道理需要在pom.xml中加入相应的Jar依赖,如下所示:   

    <!--开发工具集-->
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>4.6.10</version>
    </dependency>

     然后,需要自定义一Java Config配置文件,以Bean的形式显示配置并注入QrConfig,如下代码所示:

    @Configuration
    public class QRConfig {
    
        //采用JavaConfig的方式显示注入hutool中 生成二维码
        @Bean
        public QrConfig qrConfig(){
            //初始宽度和高度
            QrConfig qrConfig=new QrConfig(300,300);
    
            //设置边距,即二维码和边框的距离
            qrConfig.setMargin(2);
            //设置前景色
            qrConfig.setForeColor(Color.BLACK.getRGB());
            //设置背景色
            qrConfig.setBackColor(Color.WHITE.getRGB());
    
            return qrConfig;
        }
    }

     紧接着我们建立一QrCodeService,用于处理真正的生成二维码的业务逻辑,其核心代码如下所示:

    @Service
    @Slf4j
    public class QrCodeService {
        @Autowired
        private QrConfig config;
    
        //生成到文件
        public void createCodeToFile(String content, String filePath) {
            try {
                QrCodeUtil.generate(content,config,FileUtil.file(filePath));
            } catch (QrCodeException e) {
                e.printStackTrace();
            }
        }
        //生成到流
        public void createCodeToStream(String content, HttpServletResponse response) {
            try {
                QrCodeUtil.generate(content,config, "png", response.getOutputStream());
            } catch (QrCodeException | IOException e) {
                e.printStackTrace();
            }
        }
    }

     最终,是在QrCodeController控制器类中进行调用,如下代码所示:

    @Autowired
    private QrCodeService codeService;
    
    //生成二维码并将其返回给前端调用者_hutool
    @PostMapping("generate/v3")
    public BaseResponse generateV3(String content,HttpServletResponse servletResponse){
        BaseResponse response=new BaseResponse(StatusCode.Success);
        try {
            //将生成的二维码文件存放于文件目录中
            //final String fileName=LOCALDATEFORMAT.get().format(new Date());
            //codeService.createCodeToFile(content,RootPath+File.separator+fileName+".png");
    
            //将生成的二维码文件直接返回给前端响应流
            codeService.createCodeToStream(content,servletResponse);
        }catch (Exception e){
            response=new BaseResponse(StatusCode.Fail.getCode(),e.getMessage());
        }
        return response;
    }

     在上述该代码中,debug也测试了两种形式的二维码的生成,下面采用Postman测试“以图片流的形式返回二维码图片”的方法接口,其测试结果如下图所示:

    总结:

    (1)代码下载:关注“程序员实战基地”微信公众号,回复“二维码”,即可获取代码下载链接

    (2)至此,我们已经介绍完了两种“生成二维码”的实现方式的代码实战;相对而言,显然是第二种用起来比较舒服,即基于Hutool工具包的组件来生成二维码,可以说是既方便又快捷啦,当然啦,其底层仍然是基于Google ZXing工具实现的,即Hutool的工具包的部分组件其实是对第三方工具/组件的高度封装!不信的话,诸位小伙伴可以去撸一撸!

    我是debug,一个相信技术改变生活、技术成就梦想 的攻城狮;如果本文对你有帮助,请关注公众号,并动动手指收藏、点赞、以及转发哦!!!   

     关注一下Debug的技术微信公众号,最新的技术文章、课程以及技术专栏将会第一时间在公众号发布哦!

    展开全文
  • vue 项目中 自动生成 二维码

    千次阅读 2019-10-21 17:23:43
    vue 项目中 自动生成 二维码 ​ 最近在写一个vue项目,要求根据卡号可以自动生成一个二维码,并渲染在指定位置,因为第一次做类似业务,小编在网上找了找,发现了很多,具体起来主要用的就两种: QRcode vue-qr ...

    vue 项目中 自动生成 二维码

    ​ 最近在写一个vue项目,要求根据卡号可以自动生成一个二维码,并渲染在指定位置,因为第一次做类似业务,小编在网上找了找,发现了很多,具体起来主要用的就两种:

    1. QRcode
    2. vue-qr

    vue-qr比QRcode功能多在可以在中间加logo,而且好像更方便一点,具体的 小编也没试,小编需要的二维码不需要那么 多骚操作,就选择了第一种,至于要写这篇博客的目的是为说一下,运用中遇到的问题及解决方法。

    下面先介绍QRcode

    vue里安装qrcodejs的npm包

    npm install qrcodejs2  -save     -s  // 上线需要的包,打包的时候也会打包
    

    页面引用

    import QRCode from 'qrcodejs2'    //   直接在需要用的页面 写就行不需要注意路径问题
    

    二维码展示的盒子

    <div class="qrcode" ref="qrCodeUrl" id="qrcode"></div>
    
    methods: {
      creatQrCode() {
        var qrcode = new QRCode(this.$refs.qrCodeUrl, {  // 这里选择器也可以直接写 'qrcode' 用的是id选择器   指示不需要带 # 而已
          text: 'xxxx',  //  生成二维码的 内容
          width: 100,    //  宽   单位 px
          height: 100,   //  高   单位 px 
          // render: 'canvas' // 设置渲染方式(有两种方式 table和canvas,默认是canvas)  
          // background: '#f0f'  
          // foreground: '#ff0'  
          correctLevel: QRCode.CorrectLevel.H   // 二维码容错 级别
         })
      }
    },
    
    mounted() {
    	   this.creatQrCode(); // 这里会是一个重点,下面会解释
    	  }
    

    点击下载二维码:

    	// 点击下载app二维码
        downloadAppCodeImg (name) {
          var canvasData = this.$refs.qrcode.getElementsByTagName('canvas')
          var a = document.createElement("a");
          var event = new MouseEvent("click"); // 创建一个单击事件
          a.href = canvasData[0].toDataURL("image/png");;
          a.download = "drcQrcode";
          a.dispatchEvent(event); // 触发a的单击事件
        },
    
    

    好了,现在就可以了 简单吧? 当然这只是正常的情况,也是官网上介绍的用法,实际上 ,你会遇到一个错误例如:

    ### vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in v-on handler: "TypeError: Cannot read property 'appendChild' of null"
    
    ### found in
    
    ### ---> <Home> at src/script/view/home.vue
        ###   <ScrollBar> at src/script/component/scroll_bar.vue
           ###  <Frame> at src/script/component/frame.vue
              ### <App> at src/script/App.vue
                ### <Root>
    ### warn @ vue.runtime.esm.js?2b0e:619
    ### logError @ vue.runtime.esm.js?2b0e:1884
    ### globalHandleError @ vue.runtime.esm.js?2b0e:1879
    ### handleError @ vue.runtime.esm.js?2b0e:1839
    ### invokeWithErrorHandling @ vue.runtime.esm.js?2b0e:1862
    ### invoker @ vue.runtime.esm.js?2b0e:2179
    ### original._wrapper @ vue.runtime.esm.js?2b0e:6911
    ### vue.runtime.esm.js?2b0e:1888 TypeError: Cannot read property 'appendChild' of null
        ### at new Drawing (qrcode.js?d044:370)
        ### at new QRCode (qrcode.js?d044:579)
        ### at VueComponent.creatQrCode (home.vue?afc8:120)
        ### at VueComponent.dianJiZhanShi (home.vue?afc8:175)
        ### at invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1854)
        ### at HTMLAnchorElement.invoker (vue.runtime.esm.js?2b0e:2179)
        ### at HTMLAnchorElement.or
    

    看到这个报错是不是第一印象 就是 appendChild 未定义就使用了? 所以我 全局搜索发现 没有这个字段;

    接下来 你仔细 看 发现 它是定义在 qrcode.js 里面的 ,我怀疑是引入 js 造成 的 ,所以我又 手动引入一次 把它相对的路径都 写了进来,发现 还是报错; 思考之后又怀疑是生命周期函数的原因 ,因为 created 函数在 data 已有 DOM 还没有创建完成 ,可能会造成它找不到要插入的 DOM元素,所以我再次 把函数调用放在了 mounted

    函数里面 ,mounted 生命周期函数中 页面已经渲染完成,DOM 节点也已经创建,应该是没问题的,结果还是报错; 后来我干脆把它放在了methods 一个 函数里面去调用,发现点击的时候还是报同样的错。 我就意识到,是我有一部分没意识到,或者说给忽略了。 我 仔细研究后发现

    // this.$nextTick (function () {
            //   this.creatQrCode();   //  这个函数 要在 this.$nextTick 里面调用   才不会报错
            // })
    

    当然 我这里还有点波折 ,我的HTML 元素 也就是上面的

    是在 一个遮盖层的 组件只能存在的,点击的时候才显示这个遮盖层,所以在生命周期函数里面,调用这个函数哪怕配合使用 this.$nextTick 调用也是不合适的。

    希望 我的经验能帮到你

    nextTick 简单介绍

    下面是我的代码关于二维码的这一部分

        <!-- 二维码遮盖层 -->
            <div class="homeStyle">
                <van-popup v-model="show">
                  <div class="qrcode" ref="qrCodeUrl" id="qrcode"> </div>
                </van-popup>
            </div>
    
    import {
        DropdownItem,
        DropdownMenu,
        Grid,
        GridItem,
        Icon,
        Popup,
        Radio,
        RadioGroup,
        Swipe,
        SwipeItem,
        Tabbar,
        TabbarItem
      } from 'vant'
    
     import store from 'store'
     import Vue from 'vue'
     import axios from 'axios'
     import QRCode from 'qrcodejs2'
    
     // 生成二维码函数
    
          creatQrCode() {
            let cardNo = store.get('__cardNo__')
            log.info(cardNo,'二维码生成')
            var qrcode = new QRCode('qrcode', {
                text: cardNo ,
                width: 150,
                height: 150,
                // background: '#f0f',   // 背景色
                // foreground: '#ff0'    // 前景色
               
            })
            //  log.info(qrcode,'qrcode66666666666666666666666666') 
          },
            
            
            
             dianJiZhanShi () {
                // this.creatQrCode();
                // 点击展示二维码
                this.show = !this.show
                this.$nextTick (function () {
                  this.creatQrCode();
                })
          },
    

    下面补充一点知识:

    微信长按识别二维码,在 vue 项目中的实现

    微信长按识别二维码是 QQ 浏览器的内置功能,该功能的基础一定要使用 img 标签引入图片,其他方式的二维码无法识别。

    在 vue 中使用 QrcodeVue 插件

    • demo1 在 template 标签中直接使用
    <qrcode-vue :value="codeUrl" :size="size" level="H"></qrcode-vue>
    

    在微信中长按无法识别二维码

    正确的做法

    使用 qrcode 插件

    • 在 template 标签中是使用 img 标签引入
    <template>
      <div>
        <p>长按识别二维码支付</p>
        <div id="code">
          <img class="code" :src="url" alt="">
        </div>
      </div>
    </template>
    
    • 在 methods 方法里面生成二维码图片后加入 img 中即可
    methods: {
                QRCode.toDataURL('自定义的内容,可传参')
                  .then(url => {
                    this.url = url
                  })
                  .catch(err => {
                    console.error(err)
                  })
    }
    
    展开全文
  • 我前一段时间,有用apicloud项目生成二维码的功能,但是vue版本的没有处理过。百度后找到一个可行的方案: 大神实现vue项目中显示二维码功能的参考链接:https://www.cnblogs.com/hss-blog/articles/9188101.html ...

    今天同事问我一个问题,在vue项目中想要根据一个链接显示对应的二维码该怎么实现。

    我前一段时间,有用apicloud项目生成二维码的功能,但是vue版本的没有处理过。百度后找到一个可行的方案:

    大神实现vue项目中显示二维码功能的参考链接:https://www.cnblogs.com/hss-blog/articles/9188101.html
    在这里插入图片描述
    文章中提到了两个好用的二维码插件,vue-qartqrcode,由于第一种需要进行配置,而我对webpack之类的并不熟悉,保险起见,我采用了第二种方法:

    在这里插入图片描述
    由于我是在现有的后台系统中安装的qrcode的插件,安装完成后,在执行npm run serve时,一直报错:

    在这里插入图片描述
    网上也有大神遇到同样的报错信息,然后大神提出的解决办法就是:
    在这里插入图片描述
    但是我测试过,并没有什么用处。

    因此我删除node_modulespackage.json文件,从svn分支上重新拉取,然后安装qrcode时,采用cnpm install qrcodejs2 --save的方式来安装,最终成功。

    npm 安装插件后报错,可以删除插件卸载插件后,通过cnpm来进行安装!!!

    下面看下我的使用步骤:自己写一遍,才能够印象深刻!!!

    在这里插入图片描述

    1.引入qrcodejs2

    import QRCode from 'qrcodejs2'

    2.注册qrcode插件

    components:{ QRCode}

    3.html页面布局

    <div ref="qrcode" id="qrcode"></div>
    

    4.渲染二维码

    this.$nextTick(() => {
      new QRCode("qrcode", {
        width: 200,
        height: 200,
        text: "https://www.baidu.com",
      });
    });
    

    最终效果如下:
    在这里插入图片描述

    完成!!!!

    展开全文
  • 那么我们怎么用条码打印软件从现有Excel表格中导入数据批量生成我们所需要的二维码呢? 首先我们打开条码打印软件,点击“新建”新建一个标签,标签新建完成后我们可以点击顶部工具栏的“数据...
  • 于是就开始各种搜索,最终自己也利用Google的ZXing工具完成了一个生成二维码和解析二维码的简单程序。 一、 二维码生成原理(即工作原理) 二维码官方叫版本Version。Version 1是21 x 21的矩阵,Version 2是 25 x ...
  • 今天刚安装了IDEA,学会了用法,就来通过IDEA做一个生成二维码的程序。 首先新建一个项目 设置项目名称 点击Next之后,出现下图所示页面: 这里要注意,都是默认的就行(但是记住框出的文件目录,之后会...
  • 之前遇到过需要后端,根据每个用户生成带背景宣传图带二维码带用户图片带文字的合成图片的需求,自己当时花了半天的时间整理了资料,今天把自己写的代码分享出来,如果有同样需求的人,希望能给个好评,有其他建议的...
  • gayhub上的zxing可用于生成二维码,识别二维码gayhub地址:https://github.com/zxing/zxing此文只是简易教程,文末附有本demo下载地址,废话不多说,直接进入正题:(1)下载并导入zxing.jar包下载:zxing.jar下载...
  • C#MVC生成二维码

    2019-03-20 20:07:00
    这次我来呈现出MVC B/S 页面实现 一维码,二维码 1.3 第三方类库:ZXing.Net 1.3.1 说明 ZXing是一个可生成和读取1D/2D(1维/2维) 条形码的开源类库。原先是Java版本,后由第三方衍生了支持QT、C++、.Net等...
  • **gayhub上的zxing可用于生成二维码,识别二维码 gayhub地址:https://github.com/zxing/zxing 此文只是简易教程,文末附有完整代码和demo下载地址,进入正题: (1)下载并导入zxing.jar包 下载: zxing.jar...
  • 本文将基于Spring Boot介绍两种生成二维码的实现方式,一种是基于Google开发工具包,另一种是基于Hutool来实现; 为了方便理解二维码的实际应用场景,举一些例子! (1)进销存系统 想必大家都听说过,其系统中的...
  • java后台生成二维码

    2018-09-23 10:00:37
    java后台生成二维码 导包 写入生成二维码的函数 public static BufferedImage encodeImage(String contents){ BufferedImage image = null; try { Qrcode qrcode = new Qrcode(); /***...
  • 小程序将字符串生成二维码图片

    千次阅读 2018-12-27 17:55:39
    最近接到这样一个需求,需要在小程序里将十几位随机字符串转换为二维码的形式展示。...下面记录的是小程序中生成二维码图片这一操作,用的是原文作者改版后的生成二维码工具weapp-qrcode.js(de...
  • goole生成二维码的依赖: <!--google生成二维码的依赖--> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <vers...
  • 分为两本分演示,第一部分生成word文档下载到本地,第二部分是生成二维码在word再保存本地
  • android zxing 自带的生成二维码不会根据设置的宽高去显示二维码,内容越长,白边距会越大,所以整理了个demo,希望能帮助到遇到同样问题的同学。github地址:demo地址
  • 现在随着发展的需求的扩展,二维码的使用对于开发人员来说是一门必要的技能。下面我简单写了一个demo,二维码的生成工具。java生成二维码后返回前端使用img标签接收。
  • 使用python 生成二维码 中间带logo

    千次阅读 2018-08-27 16:31:01
    推荐两个库:qrcode 和 python-qrcode。 qrcode 运行在 Python 3 ...它比较适合直接用于生成二维码图片的场景。 安装 qrcode 库可以使用 pip 方式。但是该库依赖 pillow、numpy 和imageio。因此,我们需要先安装...
  • 使用JavaScript生成二维码(QRCode.js) 什么是 QRCode.js? QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。 基本用法 <div id="code...
  • Zxing 生成二维码和条形码去掉白边

    万次阅读 2018-08-13 16:51:22
    源码下载: ...根据内容生成二维码的工具类也是一搜一大堆。上面的源码里面也提供了一个。但是我们仔细看了下。会发现。不管生成的是条形码还是二维码都会有一部分的白边。如图: 我们可以看到周围有白...
  • 二维码又称QR Code,QR全称Quick ...生成二维码的方式有很多,比较常用的草料二维码就用的比较多,这里主要想用python进行批量生成二维码。1:系统环境:windows 7 python2.7版本我用的是python2.7版本,python3.6版...
  • 最近在做一个移动端的项目,里边有一个需求是生成链接并且同时把链接转换成二维码的需求,效果图如下:涉及到隐私,打个码因为用的是vue框架,而且是第一次做这中需求的东西,于是果断百度了一波,出来了一堆 什么...
  • 微信小程序将字符串生成二维码图片

    万次阅读 热门讨论 2018-06-21 19:22:35
    最近接到这样一个需求,需要在小程序里将十几位随机字符串转换为二维码的形式...公众号中(另一终端)调用JSSDK扫一扫功能,去扫描小程序生成二维码。得到字符串,然后进行接下来的逻辑处理。 下面记录的是小程...
  • Python——生成二维码

    2020-02-08 09:49:10
    1 使用 MyQR 生成二维码 先安装 myqr,使用 cmd 命令: pip install myqr 如果安装失败,可以尝试使用管理员身份启动 cmd,再次安装试试 python 代码为: from MyQR import myqr; myqr.run(words=...
  • vue中生成二维码(中间带logo)

    千次阅读 2019-12-20 10:09:18
    一开始使用qrcode生成二维码,查看源码中的参数,似乎不能带logo。单单生成二维码还是很方便的 首先输入指令 npm install qrcode --save 1 <template> <div> <qrcode-vue size="300" level...
  • 下面我们就中琅二维码软件来看一下如何编辑二维码内容并且实现批量生成的方法: 在中琅二维码软件中实现上述效果,可以说是其最基础的功能了。 首先,我们在打开软件设置纸张尺寸后,可以先点击左侧工具栏中的...
  • 本文原文地址:【Java,二维码】Java 使用 swetake 生成二维码图片,本文更新不及时,建议到原文地址浏览。 二维码又称二维条码,是1994年由日本DW公司发明。常见的二维码为QR Code,QR全称Quick Response,是一个近...
  • 1 二维码 二维码(2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。它能将数字、英文字母、汉字、日文字母、特殊符号(如空格,%,/ 等)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,508
精华内容 6,603
关键字:

同样的内容生成的二维码不同