前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >js 生成二维码并点击下载软件_js生成二维码并保存

js 生成二维码并点击下载软件_js生成二维码并保存

作者头像
全栈程序员站长
发布2022-11-02 17:10:55
发布2022-11-02 17:10:55
2.6K00
代码可运行
举报
运行总次数:0
代码可运行

html 部分

代码语言:javascript
代码运行次数:0
运行
复制
<h1>
文字生成二维码及生成可下载的图片
</h1>
<div><input id="input" value="http://www.baidu.com" type="text"><button type="button" onclick="refresh()">生出来</button></div>
<div id="output">
<!--这里放canvas格式的二维码-->
</div>
<p>上面的码是使用canvas标签, 下面的是img标签</p>
<div id="img-qr">
<!--放img格式的二维码-->
</div>
<p id="download">
<!--放下载链接-->
</p>

js

我们先引入两个js文件

代码语言:javascript
代码运行次数:0
运行
复制
<script src="http://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://cdn.bootcss.com/jquery.qrcode/1.0/jquery.qrcode.min.js"></script>
代码语言:javascript
代码运行次数:0
运行
复制
 window.onload = function () { 

refresh();
};
function refresh() { 

let text = document.getElementById("input").value;
creater(text);
}
/** * 生成二维码及下载链接的函数 * @param text 传入你要生成二维码的文字 */
function creater(text = '') { 

//http://www.baidu.com可以自定义任意你要的链接或者文字
jQuery('#output').empty().qrcode(text);
let drawing = document.getElementsByTagName('canvas')[0];
//确定浏览器支持<canvas>元素
if (drawing.getContext) { 

let context = drawing.getContext('2d');
console.log(context);
//取得图像的数据 URI
let imgURI = drawing.toDataURL("image/png");
//显示img格式图片开始(不要此步可以跳过)
let image = document.createElement("img");
image.src = imgURI;
$("#img-qr").empty().append(image);
//显示img格式图片结束(不要此步可以跳过)
//显示下载链接开始
let a = document.createElement("a");
a.href = imgURI;
//设置下载链接的文字提示
a.innerText = 'download qrcode';
//设置下载的文件名
a.download = 'test.png';
document.body.appendChild(a);
$("#download").empty().append(a);
//显示下载链接结束
}
}

界面效果

如果想生成中文,并且出现了乱码,可以使用下面方法将input文字进行转换

代码语言:javascript
代码运行次数:0
运行
复制
function toUtf8(str) { 

var out, i, len, c;
out = "";
len = str.length;
for (i = 0; i < len; i++) { 

c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) { 

out += str.charAt(i);
} else if (c > 0x07FF) { 

out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else { 

out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180755.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档