html2canvas的使用

vue中的dom结构

<template>
        <div  id="picture">
             <img :src="保存的图片的路径" alt="">
        </div>
</template>

js的结构

import html2canvas from 'html2canvas';
export defalut{
    methods:{
        saveImage(){
          const targetDom = document.getElemetById('picture');
          html2canvas (targetDom, {
              width:targetDom.offsetWidth,//画布的宽
              height:targetDom.offsetHeight,//画布的高
              scale:1,//处理模糊问题
              useCORS:true,//开启跨域,这个是必须的
              //scrollX:0,//图片x轴的位置
              //scrollY:0,//图片Y轴的位置
              //x:0,//x轴的偏移量
              //Y:0//Y轴的便宜量
          }).then(canvas => {
              let dataURL = canvans.toDataURL('image/png');
              dataURL = dataURL.replace('data:image/png;base64,', '')
              var saveImageData = {
                'type':'61',//协议Type值
                'imageData':dataURL//保存图片的地址
              }
              // 接下来就是调用原生的桥方法了 下面展示只是模拟的方法
                AppBridge.callNative(imageData, async (data) => {
                  if(data.result === 1) {
                      // 提示图片保存成功
                  }else{
                      // 保存失败
                  }
                })
             })
    }
  }
}

遇到过的问题

1、图片的偏移问题

1.图片的偏移问题
有一个很重要的问题需要提醒一下,当你的dom元素没有用到绝对定位或者fixed定位的时候,不要给元素加上偏移量,这样有可能会导致你的图片发生偏移。我们在项目上线的时候遇到了一个很郁闷的问题,保存的图片在预发和测试环境上都没有问题,但是只要上生产环境就会发生图片偏移,后来我们通过修改,发现了是这个定位的问题。
2.对 css3 支持不好
html2canvas 暂不支持的 CSS 样式属性:

background-blend-mode、background-clip: text、box-decoration-break、repeating-linear-gradient()、font-variant-ligatures、mix-blend-mode、writing-mode、writing-mode、border-image、box-shadow、filter、zoom、transform
3.背景图片模糊
解决方案:使用img标签来实现background-image的效果
4.图片无法渲染
在img标签内加入crossorigin=‘anonymous’(crossorigin='anonymous’可以触发带跨域请求头Origin的HTTP请求)并给html2canvas设置allowTaint: true配置
~~写在结尾:
目前只是遇到这些问题,希望能帮助到大家

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 话不多说,在实际项目中生成截图是很常见的需求,而一般的,我们都会选择使用js库来自动生成(从头造轮子太难了...)...
    示十阅读 73,526评论 7 15
  • html2canvas: 将dom元素转为一张图片 1,装包:npm install --save html2ca...
    哈哈冰淇淋阅读 10,088评论 0 2
  • Html2canvas是什么? 是一个脚本 这个脚本可以允许用户直接在浏览器上拍摄网页或其中一部分的"屏幕截图"....
    又菜又爱分享的小肖阅读 23,709评论 0 3
  • html2canvas 使用注意点 最近在搞一个截图的东西,遇到了一些问题,所以贴出代码,方便大家一次性解决开发中...
    超能e战队_阅读 12,819评论 0 2
  • 需要将一个背景图+动态获取的文字+微信头像拼接成一张图片,用户可长按保存最终图片,难免就是要将html转换成图片。...
    阳光小美女king阅读 14,548评论 2 0

友情链接更多精彩内容