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的文档哟!

相关推荐
用户62960593247056 分钟前
一次位置调整引发的画布失忆:深入 Vue2 虚拟 DOM 复用机制
前端·vue.js
Sterting8 分钟前
条件渲染与列表渲染
前端·vue.js
__sjfzllv___12 分钟前
在职前端Leader学习/转行 AI Agent -DAY28
前端
不爱说话郭德纲13 分钟前
uni-app x iOS 扫码模糊怎么办?AVFoundation 灰尘级别摄像头助你超广角聚焦
前端·uni-app·app
柒和远方14 分钟前
V062:WebGPU 端侧推理与单例模式:从 Transformers.js 把大模型装进浏览器,到 Worker 线程的流式对话
前端
huabuyu16 分钟前
INP 自动化归因与自愈:如何自动定位、修复并验证一次卡顿
前端·javascript
何时梦醒17 分钟前
第一篇:项目概览 — 在浏览器里跑大模型,端侧 AI 的革命来了
前端·人工智能
何时梦醒18 分钟前
第二篇:工程化搭建 — Vite + React + TypeScript + TailwindCSS 全解析
前端·人工智能
用户03321266636720 分钟前
使用 Python 将 HTML 内容添加到 PowerPoint 演示文稿中
python·html
只一21 分钟前
React 性能优化精讲:useCallback 与 useMemo 彻底吃透(附实战案例)
前端·react.js