一般在项目开发中,前端显示给用户扫描的二维码基本都是由后端代码生成的,那么这个高大上的功能能不能用 JS 来绘制呢? 答案是肯定的

首先我们需要一个插件 jquery.qrcode.js,该插件基于 jquery 插件,使用方法很简单,如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>二维码</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.min.js"></script>
    <script src="https://blog-static.cnblogs.com/files/lovling/jquery.qrcode.js"></script>
</head>
<style type="text/css">
    #output {
        width: 360px;
        padding: 0;
    }
</style>
<body> 
    <div id="output"></div>
</body>
<script type="text/javascript">
    $('#output').qrcode({
        text: "ninhaonihaohnihao",      // 二维码的内容
        render: "canvas",               // 设置渲染方式
        width: 360,                     // 设置宽度: 默认256
        height: 360,                    // 设置高度: 默认256
        background: "#ffffff",          // 背景颜色
        foreground: "#000000",          // 前景颜色
    });
</script>
</html>

效果如下,这样,我们就可以自己生成 二维码了,可以用手机扫一扫,发现能完美获得 配置的内容

可是我们发现,某些官方网站的二维码中间是有 logo 的,那么这个可以加 logo 吗?

目前该插件不支持该功能,可是笔者是有强迫症的人,这个黑乎乎的二维码怎么能满足我呢,百度 google 一番,通过修改了插件的一些源码,终于实现了想象中的效果

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>二维码</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.min.js"></script>
    <script src="https://blog-static.cnblogs.com/files/lovling/jquery.qrcode.js"></script>
</head>
<style type="text/css">
    #output {
        width: 360px;
        padding: 0;
        margin: 100px auto 0 auto;
    }
</style>
<body> 
    <div id="output"></div>
</body>
<script type="text/javascript">
    $('#output').qrcode({
        text: "ninhaonihaohnihao",      // 二维码的内容
        render: "canvas",               // 设置渲染方式
        width: 360,                     // 设置宽度: 默认256
        height: 360,                    // 设置高度: 默认256
        background: "#ffffff",          // 背景颜色
        foreground: "#000000",          // 前景颜色
        src: "./my.jpg",                // logo地址, 图片居中, 图片为二维码的 1/9 为最佳,可适当调整,但是太大会影响二维码的内容
        imgWidth: 120,                  // logo宽度
        imgHeight: 120                  // logo高度
    });
</script>
</html>

效果如下,图片选的不是很好,效果不好看,不过总算是实现了

修改后的插件已上传到博客园,有兴趣的朋友可以下载看看,顺便看看能不能再优化  https://blog-static.cnblogs.com/files/lovling/jquery.qrcode.js

大家可以直接引用改地址,也可以下载后在本地引入

 

posted on 2019-03-12 18:22  被遗忘的优雅  阅读(1664)  评论(1编辑  收藏  举报