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

介绍

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

步骤一:引入html2canvas 的js源码

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

javascript 复制代码
<script src="./hiprint/plugins/jspdf/html2canvas.min.js"></script>

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

html部分

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

javascript 复制代码
<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>
javascript 复制代码
<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、获取到每个子元素的dom
             var 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的文档哟!

相关推荐
小码哥_常5 小时前
安卓开发秘籍:解锁10大性能优化秘诀
前端
try2find6 小时前
打印ascii码报错问题
java·linux·前端
郑州光合科技余经理6 小时前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
冰暮流星7 小时前
javascript事件案例-全选框案例
服务器·前端·javascript
Csvn7 小时前
前端性能优化实战指南
前端
Moment7 小时前
2026 年,AI 全栈时代到了,前端简历别再只写前端技术了 🫠🫠🫠
前端·后端·面试
糯米团子7497 小时前
Web Worker
开发语言·前端·javascript
freewlt8 小时前
React Server Components 深度解析
前端·react.js·前端框架
wordbaby8 小时前
一次跨端 Loading 卡死复盘:把请求计数从 Axios 拦截器迁到 try/catch/finally
前端·axios
我命由我123458 小时前
JavaScript 开发 - 获取函数名称、获取函数参数数量、获取函数参数名称
开发语言·前端·javascript·css·html·html5·js