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

相关推荐
海石3 小时前
📱随时随地大小编:TraeSolo 移动端初体验
前端·ai编程·trae
爱滑雪的码农5 小时前
详细说说React大型项目结构以及日常开发核心语法
前端·javascript·react.js
七牛开发者5 小时前
HTML is the new Markdown:来自 Claude Code 团队的实践
前端·人工智能·语言模型·html
@大迁世界6 小时前
43.HTML 事件处理和 React 事件处理有什么区别?
前端·javascript·react.js·html·ecmascript
CloneCello6 小时前
AI时代程序员认知调整指南
前端
ZC跨境爬虫6 小时前
跟着 MDN 学 HTML day_38:(DocumentFragment 文档片段接口详解)
前端·javascript·ui·html·音视频
@大迁世界7 小时前
41.ShadCN 是什么?它如何和 Tailwind CSS 集成,从而更容易构建可访问且可自定义的 React 组件?
前端·javascript·css·react.js·前端框架
千叶风行8 小时前
Text-to-SQL 技术设计与注意事项
前端·人工智能·后端
软件开发技术深度爱好者8 小时前
HTML5+JavaScript读取DOCX 文档完整内容
前端·html5
幽络源小助理8 小时前
苹果CMS V10 MXPro V4.5模版下载, 自适应视频主题源码, 幽络源源码
前端·开源·源码·php源码