当前位置: 首页 > news >正文

HTML5使用html2canvas转化为图片,然后再转为base64.

介绍

场景:今天同事提了个协助,将HTML5文件中的元素转为图片,并且最终转为base64格式传给后端。感觉还挺有意思就记录下。(试例如下)

步骤一:引入html2canvas 的js源码

html2canvas.min.js 下载地址  https://files.cnblogs.com/files/lyt520/html2canvas.min.js

<script src="./hiprint/plugins/jspdf/html2canvas.min.js"></script>

步骤二:遍历元素并使用html2canvas对html进行图片生成。最后将图片转为base64格式

html部分

(这个例子有一个特殊的地方,就是它会显示多个二维码标签。所有我这边使用 DOM来获取下父元素,然后再获取到底下的子元素。遍历下,一个一个转化为图片。代码如下,有不理解的可以留言讨论)

<div style="display: block" class="canvasBox"><div class="hiprint-printPanel panel-index-0" id="canvasImg" ><div class="hiprint-printPaper" original-height="45" style="width: 120mm; height: 44mm;"><div class="hiprint-printPaper-content" >div内容</div></div></div><div class="hiprint-printPanel panel-index-0" id="canvasImg" ><div class="hiprint-printPaper" original-height="45" style="width: 120mm; height: 44mm;"><div class="hiprint-printPaper-content" >div内容</div></div></div></div>
<script>window.onload=function(){//1、获取下父元素var oTd=document.querySelector('.canvasBox');               //2、遍历父元素下的子元素 oTd.children即可得到子元素for(var i=0;i<oTd.children.length;i++){//3、每个子元素中,我加上不同的class类名  所以`canvasImg${i}`oTd.children[i].className = `canvasImg${i}`;//4、获取到每个子元素的domvar domNode = document.querySelector(`.canvasImg${i}`);//5、使用html2canvas 并且配置html2canvas(domNode,{width: Math.floor(domNode.clientWidth), //宽height: Math.floor(domNode.clientHeight), //高scale: 0.7,  //设置像素比useCORS: true,allowTaint:false,}).then(function(canvas) {document.body.appendChild(canvas);var img = document.createElement('img');//6、获取图片路径 并且转base64格式img.src = canvas.toDataURL('image/jpeg');console.log(img.src,"路径");var dataURL=img.src.replace(/^data:image\/(png|jpg|jpeg);base64,/, "")console.log(dataURL,'base64格式');img.setAttribute('id', 'canvasImg');// 将img展示到页面上// prependChild(img, domNode);});}}
</script>

html2canvas中的配置项不清楚的话,推荐可以看下html2canvas的文档哟!

http://www.lryc.cn/news/185994.html

相关文章:

  • 【C++设计模式之原型模式:创建型】分析及示例
  • TDengine OSS 与 qStudio 实现无缝协同,革新数据分析和管理方式
  • css的gap设置元素之间的间隔
  • Flask-[项目]-搭建短网址系统:flask实现短网址系统,短网址系统,构建短网址系统
  • 【从0开始配置前后端项目】——Docker环境配置
  • R语言 一种功能强大的数据分析、统计建模 可视化 免费、开源且跨平台 的编程语言
  • springmvc-JSR303进行服务端校验分组验证SpringMVC定义Restfull接口异常处理流程RestController异常处理
  • 证件照换底色详细教程
  • 【ringbuff share mem】
  • 【Zookeeper专题】Zookeeper经典应用场景实战(一)
  • 【数据库——MySQL】(15)存储过程、存储函数和事务处理习题及讲解
  • FFmpeg:打印音/视频信息(Meta信息)
  • 1.Linux入门基本指令
  • 2023腾讯云服务器优惠代金券领取、查询及使用说明
  • 大华智慧园区管理平台任意密码读取漏洞 复现
  • 【C++ 学习 ㉖】- 位图详解(哈希扩展)
  • 天启科技联创郭志强:趟遍教育行业信数化沟坎,创业智能赛道重塑行业生态
  • Cuckoo沙箱各Ubuntu版本安装及使用
  • 什么是mvvm模式,优点是什么
  • C/C++ 中的函数返回局部变量以及局部变量的地址?
  • springboot和vue:七、mybatis/mybatisplus多表查询+分页查询
  • 【Leetcode】 51. N 皇后
  • Java数据库连接:JDBC介绍与简单示例
  • 智慧茶园:茶厂茶园监管可视化视频管理系统解决方案
  • springboot整合pi支付开发
  • 类 ChatGPT 模型存在的局限性
  • Nginx的安全控制
  • 字符串与字符编码 - GO语言从入门到实战
  • 12P4375X042-233C KJ2005X1-BA1 CE3007 EMERSON servo controller
  • WPF向Avalonia迁移(四、其他事项)