1. 导入包生成二维码

npm install qrcode.react

npm包链接: https://www.npmjs.com/package/qrcode.react

1.1 生成二维码:

import * as QrCode from 'qrcode.react'render() {return (<QrCode value={“二维码内容”} size={80} id="qrCode"/>)
}/* 注意这个id下文转图片格式的时候会用到 */

2.将生成的canvas格式二维码转换成image格式

基本思路是: canvas -> toDataUrl -> 转换成base64编码的image格式

延展开来如果要做 web端的点击下载: canvas -> toDataUrl() -> image -> a标签, a.download = "下载文件名"

H5的点击按钮下载二维码 楼主暂时没有实现,如果以后做出来了会更新,或者有大佬可以分享一下。

2.1 转图片

let canvasImg = document.getElementsByTagName('canvas')[0];
let image = new Image();// canvas.toDataUrl() 可以将canvas格式的文件转换成基于base64的指定格式的图片
// 注意这个api ie9以下不支持image.src = canvasImg.toDataURL("image/png");
let alink = document.createElement("img");alink.className = 'qrcode';alink.src = image.src;alink.download = "下载文件的名字.png";//然后用这个我们创造的 img 节点去替换 canvasImg节点 这样原来在dom节点里的canvas就会被替换成image拉canvasImg.parentNode.replaceChild(alink,canvasImg);

2.2

一直用框架的朋友可能对原生的一些语句生疏了,比如我本人... 所以最后来复习一下dom节点操作的方法:

2.2.1、创建元素节点:createElement

用法:document.createElement("p");//创建p标签;

创建文本节点:createTextNode;

用法:document.createTextNode("txt");//创建文本标签;

2.2.2、插入节点:appendchild:在要插入的元素节点上调用,他插入指定的节点使其成为那个节点的最后一个子节点。

insertBefore:在已有的元素前插入一个新元素;

insertAfter:在现有的元素后面插入一个新元素;

2.2.3、删除节点:removeChild;从文档树中删除一个节点(先找到要删除节点的父节点,用父节点删除);

用法:var para1=document.getElementById("p1");

para1.parentNode.removeChild(para1);

2.2.4、替换节点:replaceChild;将一个节点替换为另一个节点(先找到要替换的节点的父节点,用父节点替换);

补充:

上述方法 只是将指定的二维码换成了image,但是只是静态换一次。为了动态的换二维码,楼主封了个土味方法,有更好的方法的话可以赐教一下。

原理就是不替换节点,而是插入节点,同时把 canvas节点 display:none

changeCanvasToPic = () => {let canvasImg = document.getElementsByTagName('canvas')[0];let image = new Image();image.src = canvasImg.toDataURL("image/png");//将canvas格式图片转换成imagelet alink = document.createElement("img");alink.className = 'qrcode';alink.id ="qr-img";alink.src = image.src;alink.download = "ceshi.png";let qrImg = document.getElementById('qr-img');if(qrImg){canvasImg.parentNode.replaceChild(alink,qrCode);} else{canvasImg.parentNode.insertBefore(alink,canvasImg);}}render(){return(<QRCode value={this.state.address} size={100} style={{display:'none'}} id="qrCode" />
)
}

上文资料参考:

https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/toDataURL

https://www.jianshu.com/p/d91216d465d9

https://blog.csdn.net/qq_38130094/article/details/80509131

React生成二维码并将canvas转换成img格式相关推荐

  1. 生成二维码并且将生成图片转换成输入流

    生成二维码导入Ireport 图片直接转换为输入流 # 标题 一.生成二维码并且将图片转换成为输入流 代码如下(示例): public BufferedImage addLogo(BufferedIm ...

  2. qrcodejs2生成二维码,通过canvas绘制带边框+中间logo的二维码图片,下载二维码

    文章目录 一.通过qrcodejs2生成一个二维码 二.点击[下载配置服务器二维码]来下载二维码 1.通过canvas去绘制 边框+二维码+logo (1)为canvas增加绘制圆角矩形的方法(can ...

  3. 生成二维码并将Bitmap保存成图片

    本来项目集成的Zxing Bitmap qrCode = EncodingHandler.createQRCode(shareUrl, DimenUtils.dp2px(105)); 虽然这个类生成的 ...

  4. Java生成二维码并将其绘制成个人名片图片

    一.生成二维码 1.导入依赖 <dependency><groupId>QRCode</groupId><artifactId>QRCode</a ...

  5. React 生成二维码

    使用qrcode.react 安装依赖库 npm install qrcode.react// yarn add qrcode.react 代码实现 import React, { Component ...

  6. java批量生成二维码图片,并打包成zip

    最近开发遇到了一个批量打印二维码并生成zip包的需求,先记录下来 pom依赖 <!--添加二维码依赖包--><dependency><groupId>com.goo ...

  7. jQuery和react实现二维码

    jq如何生成二维码 代码如下: 1.jquery.qrcode生成二维码代码 <!DOCTYPE html> <html><head><script char ...

  8. jquery 生成二维码并嵌入图片

    用到的js 库     jquery-3.3.1.min.js  jquery.qrcode.min.js  html2canvas.js (百度云链接:https://pan.baidu.com/s ...

  9. vue qrcode生成二维码

    1.首先安装qrcode插件 npm i qrcode -S 2.引入使用 import QRCode from 'qrcode' 3.生成二维码 <template><div> ...

最新文章

  1. Memcache参数
  2. mysql 概念和逻辑架构
  3. 循环控制_continue语句
  4. .NET5 开发手机提词应用,基于内嵌Web服务器及PowerPoint自动化
  5. python运行时间只算快的吗_Python 疑难问题:[] 与 list() 哪个快?为什么快?快多少呢?...
  6. 运行jar包提示找不到.properties文件的问题
  7. 管道 通过匿名管道在进程间双向通信
  8. 从王者荣耀看设计模式(二.单例模式)
  9. 转载 《Python爬虫学习系列教程》学习笔记
  10. Win11繁体中文字体显示不全如何解决?
  11. echarts 柱状图间距修改
  12. 基于支持向量机的新闻分类
  13. 基于java写的雷霆战机
  14. Flutter开发:Another exception was thrown:Unable to load asset:…的解决方法
  15. Centos7升级OpenSSL 1.0.2k-fips
  16. linux 键盘测试程序员,程序员之家打字测试
  17. 老旧小区为什么要进行安防升级改造
  18. LOJ 6485 LJJ学多项式
  19. 手把手教你将普通wifi路由器变为智能广告路由器
  20. 【转载】徐汉彬:PHP7和HHVM的性能之争

热门文章

  1. 在电信物联网平台实现SOTA远程升级
  2. springboot+Rabit实战三:(springboot+rabbit 项目搭建)
  3. 鸡嗉囊病预防的方法 鸡防治嗦囊炎病用什么药
  4. 微软超融合+混合云:源自Azure技术的超融合架构
  5. python中文社区-python-chinese.GitHub.io
  6. firefoxos :add ipdl
  7. 【转】给大家分享一下目前mlc颗粒的内存卡资料
  8. mixamo_Mixamo的动画商店插件现在支持Mecanim!
  9. 自学web前端练手——js的考试倒计时
  10. 卷积的拉普拉斯变换等于拉普拉斯变换的乘积