js 生成二维码并下载

1.先利用 qrcode 生成二维码

引入qrcode.js ,地址为 qrcodejs-04f46c6.zip 点击打开链接

页面: 

<button onclick="createQrcode()">点我生成网二维码</button>
<button onclick="downloadQrcode()">点我下载二维码</button>
<div id="qrcode"></div>
二维码生成函数:
function createQrcode(){
        var qrcode = new QRCode(document.getElementById("qrcode"), {
            text: "hahaha",  //你想要填写的文本
            width: 300, //生成的二维码的宽度
            height: 300, //生成的二维码的高度
            colorDark : "#000000", // 生成的二维码的深色部分
            colorLight : "#ffffff", //生成二维码的浅色部分
            correctLevel : QRCode.CorrectLevel.H
        });
    }

此时可以看到二维码已经在页面上展示了。

qrcode的方法 : 

makeCode(text) //设置内容
clear()   //清除内容。
 

2.下载二维码:

我们先看一下,生成二维码之后页面上的DOM元素展示。可以看到在id为qrcode的元素中多了俩个,一个是canvas元素,另外一个是img,就是我们生成的二维码图片。以base64的编码格式描述图片信息。

1)第一种:只需要获取到生成的img元素,并且填充到canvas中,在使用a标签的download 和href属性就可以实现下载了。

    function downloadQrcode(){
        var canvas = document.createElement("canvas");  //创建canvas元素
        var qrcode = document.getElementById('qrcode');
        var img = qrcode.getElementsByTagName('img')[0]; // 获取到图片元素。
         canvas.height = img.height;
         canvas.width = img.width;
         var ctx = canvas.getContext("2d");  //获取context对象
         ctx.drawImage(img,0,0);             //向画布上绘制图像
         var link = document.createElement("a"); 
         var url = canvas.toDataURL("image/png"); // 将canvas中图片转化为base64码
         link.setAttribute("href",url);
         link.setAttribute("download",'123.png');
         link.click();
        }
    }

2)第二种:直接获取到img的src属性,填充到a标签的href即可,比较简单一些。

 function downloadQrcode(){
        var qrcode = document.getElementById('qrcode');
        var img = qrcode.getElementsByTagName('img')[0];
        var link = document.createElement("a");
        var url = img.getAttribute("src");
        link.setAttribute("href",url);
        link.setAttribute("download",'123.png');
        link.click();
    }

3.完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="http://static.runoob.com/assets/qrcode/qrcode.min.js"></script>
</head>
<body>
<button onclick="createQrcode()">点我生成网二维码</button>
<button onclick="downloadQrcode()">点我下载二维码</button>
<div id="qrcode"></div>
</body>
</html>
<script>
    function createQrcode(){
        qrcode1 = new QRCode(document.getElementById("qrcode"), {
            text: "hahaha",
            width: 300, //生成的二维码的宽度
            height: 300, //生成的二维码的高度
            colorDark : "#000000", // 生成的二维码的深色部分
            colorLight : "#ffffff", //生成二维码的浅色部分
            correctLevel : QRCode.CorrectLevel.H
        });
    }
    function downloadQrcode(){
        var qrcode = document.getElementById('qrcode');
        var img = qrcode.getElementsByTagName('img')[0];
        var link = document.createElement("a");
        var url = img.getAttribute("src");
        link.setAttribute("href",url);
        link.setAttribute("download",'123.png');
        link.click();
    }
</script>

 

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在Vue3中生成二维码下载,可以使用qrcode-generator库和html2canvas库。下面是实现的步骤: 1. 安装依赖: ``` npm install qrcode-generator html2canvas --save ``` 2. 在组件中引入依赖: ```javascript import QRCode from 'qrcode-generator'; import html2canvas from 'html2canvas'; ``` 3. 在组件中定义生成二维码的方法: ```javascript generateQRCode() { // 创建二维码实例 const qr = QRCode(0, 'L'); // 设置二维码内容 qr.addData('https://www.example.com'); qr.make(); // 获取二维码图片的base64编码 const base64 = qr.createDataURL(); // 创建一个img标签 const img = new Image(); // 设置img标签的src属性为二维码图片的base64编码 img.src = base64; // 将img标签插入到DOM中 document.body.appendChild(img); // 使用html2canvas库将DOM转换为canvas html2canvas(document.body).then(canvas => { // 将canvas转换为图片的base64编码 const imageBase64 = canvas.toDataURL('image/png'); // 创建一个a标签 const a = document.createElement('a'); // 设置a标签的href属性为图片的base64编码 a.href = imageBase64; // 设置a标签的download属性为下载的文件名 a.download = 'qrcode.png'; // 将a标签插入到DOM中 document.body.appendChild(a); // 模拟点击a标签进行下载 a.click(); // 将a标签从DOM中移除 document.body.removeChild(a); }); } ``` 4. 在组件中调用生成二维码的方法: ```html <template> <div> <button @click="generateQRCode">生成二维码下载</button> </div> </template> ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值