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

js 生成二维码并点击下载软件_js生成二维码并保存html部分<h1>文字生成二维码及生成可下载的图片</h1><div><inputid=”input”value=”http://www.baidu.com”type=”text”><buttontype=”button”onclick=”refresh()”>生出来</button></div><divid=”output”><!–这里放canvas格式的二维

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

html 部分

<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文件

<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>
 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文字进行转换

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.net/180755.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 聊天室源码_h5聊天室源码

    聊天室源码_h5聊天室源码http://zhidao.baidu.com/question/33926814.html?fr=qrl&fr2=query

    2022年10月23日
    0
  • vs2015安装失败怎么卸载_vs2013怎么卸载

    vs2015安装失败怎么卸载_vs2013怎么卸载使用微软自带的程序安装卸载工具有时候无法完全卸载VS2005,导致想重新安装VS2005时提示“此计算机上已安装了试用版本。必须先卸载以前安装的试用版本后才能安装另一个试用版”。此时可以下载专用工具“VS2005卸载工具”进行彻底删除,此具工在本人的博客资源中有下载。如果这样彻底删除后还不能安装,则可以进入注册表,找到如下注册键,把它删除:删除HKEY_LOCAL_MACHINE\SOFTW

    2022年9月23日
    0
  • 微信开放平台扫码登录[通俗易懂]

    微信开放平台扫码登录[通俗易懂]微信开放平台扫码登录的功能只有已经认证过的微信公众号才可以使用,很多学习微信的同学可能没办法使用这个功能,但是别担心,以下网址中有很多账号可以使用:【想要获取更多公众账号可以关注微信公众号:小D课堂】https://mp.weixin.qq.com/s?__biz=MzUyMDg1MDE2MA%3D%3D&amp;idx=2&amp;mid=2247483689&amp;sn=5…

    2022年6月14日
    86
  • Linux中top命令_linux tail命令详解

    Linux中top命令_linux tail命令详解原标题:Linux下top命令详解1、简介top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top显示系统当前的进程和其他状况,是一个动态显示过程,可以自动或者通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.。比较准确的说,top命令提供了实时的对系统处理器的状态监控,显示系统中CPU…

    2022年9月24日
    0
  • Java开发手册之单元测试

    Java开发手册之单元测试Java开发手册之单元测试

    2022年4月22日
    39
  • 秒杀多线程第二篇 多线程第一次亲热接触 CreateThread与_beginthreadex本质差别

    秒杀多线程第二篇 多线程第一次亲热接触 CreateThread与_beginthreadex本质差别

    2021年12月14日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号