html2canvas的使用

vue中的dom結(jié)構(gòu)

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

js的結(jié)構(gòu)

import html2canvas from 'html2canvas';
export defalut{
    methods:{
        saveImage(){
          const targetDom = document.getElemetById('picture');
          html2canvas (targetDom, {
              width:targetDom.offsetWidth,//畫(huà)布的寬
              height:targetDom.offsetHeight,//畫(huà)布的高
              scale:1,//處理模糊問(wèn)題
              useCORS:true,//開(kāi)啟跨域,這個(gè)是必須的
              //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',//協(xié)議Type值
                'imageData':dataURL//保存圖片的地址
              }
              // 接下來(lái)就是調(diào)用原生的橋方法了 下面展示只是模擬的方法
                AppBridge.callNative(imageData, async (data) => {
                  if(data.result === 1) {
                      // 提示圖片保存成功
                  }else{
                      // 保存失敗
                  }
                })
             })
    }
  }
}

遇到過(guò)的問(wèn)題

1、圖片的偏移問(wèn)題

1.圖片的偏移問(wèn)題
有一個(gè)很重要的問(wèn)題需要提醒一下,當(dāng)你的dom元素沒(méi)有用到絕對(duì)定位或者fixed定位的時(shí)候,不要給元素加上偏移量,這樣有可能會(huì)導(dǎo)致你的圖片發(fā)生偏移。我們?cè)陧?xiàng)目上線的時(shí)候遇到了一個(gè)很郁悶的問(wèn)題,保存的圖片在預(yù)發(fā)和測(cè)試環(huán)境上都沒(méi)有問(wèn)題,但是只要上生產(chǎn)環(huán)境就會(huì)發(fā)生圖片偏移,后來(lái)我們通過(guò)修改,發(fā)現(xiàn)了是這個(gè)定位的問(wèn)題。
2.對(duì) 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標(biāo)簽來(lái)實(shí)現(xiàn)background-image的效果
4.圖片無(wú)法渲染
在img標(biāo)簽內(nèi)加入crossorigin=‘a(chǎn)nonymous’(crossorigin='anonymous’可以觸發(fā)帶跨域請(qǐng)求頭Origin的HTTP請(qǐng)求)并給html2canvas設(shè)置allowTaint: true配置
~~寫(xiě)在結(jié)尾:
目前只是遇到這些問(wèn)題,希望能幫助到大家

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 話不多說(shuō),在實(shí)際項(xiàng)目中生成截圖是很常見(jiàn)的需求,而一般的,我們都會(huì)選擇使用js庫(kù)來(lái)自動(dòng)生成(從頭造輪子太難了...)...
    示十閱讀 73,572評(píng)論 7 15
  • html2canvas: 將dom元素轉(zhuǎn)為一張圖片 1,裝包:npm install --save html2ca...
    哈哈冰淇淋閱讀 4,904評(píng)論 0 2
  • Html2canvas是什么? 是一個(gè)腳本 這個(gè)腳本可以允許用戶直接在瀏覽器上拍攝網(wǎng)頁(yè)或其中一部分的"屏幕截圖"....
    又菜又愛(ài)分享的小肖閱讀 23,771評(píng)論 0 3
  • html2canvas 使用注意點(diǎn) 最近在搞一個(gè)截圖的東西,遇到了一些問(wèn)題,所以貼出代碼,方便大家一次性解決開(kāi)發(fā)中...
    超能e戰(zhàn)隊(duì)_閱讀 8,905評(píng)論 0 2
  • 需要將一個(gè)背景圖+動(dòng)態(tài)獲取的文字+微信頭像拼接成一張圖片,用戶可長(zhǎng)按保存最終圖片,難免就是要將html轉(zhuǎn)換成圖片。...
    陽(yáng)光小美女king閱讀 13,685評(píng)論 2 0

友情鏈接更多精彩內(nèi)容