關于html2canvas用法的總結

最近H5項目有個功能需求:長按微信網頁保存為截圖。本人使用了html2canvas.js實現,感覺效果還不錯,有幾個注意點和大家分享一下。

html2canvas官網:https://html2canvas.hertzen.com/

使用的版本是最新版本:^1.0.0-alpha.12

let ctx = this;
html2canvas(document.getElementById("sign"),{ 
  scale: 2 }).then(function(canvas) {
  ctx.url = canvas.toDataURL("image/png");
});

html2canvas 可以將一個元素渲染為canvas。需要注意的是,Vue使用v-if和v-show的時候html2canvas無法將元素渲染為canvas。在我的項目之中存在一個骨架屏,這里我的解決方案是對要渲染的網頁采用position:absolute為其增加一個蒙層。

生成canvas之后可以采用canvas.toDataURL("image/png")將canvas轉化為base64。

關于清晰度問題:在Android手機上,生成的圖片會存在模糊。圖片的清晰度取決于生成的canvas的清晰度,在html2canvas之中存在一個參數scale,這里設置生成canvas的大小設置為圖片大小的兩倍保障清晰度。

最后,如果網頁之中存在較大的圖片,可能導致html2canvas生成canvas的時候圖片還沒有加載完,從而致使排版錯亂。可以判斷一下圖片是否加載完。

$('img').on('load', function() {
  //圖片加載完成
});
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。