我發現將DOM轉化爲圖片是一個很是常見的需求,而本身手動轉是很是麻煩的,因而找到了html2canvas這個插件,既是用得比較多的也是維護得比較好的一個插件。html
注意:版本比較多,這裏介紹最新版npm
npm install html2canvas --save
如今最新的版本應該是1.0.0,另外還有一個比較經典的版本是0.5.0,網上有許多關於這個版本的bug說明。canvas
<div class="imageWrapper" ref="imageWrapper"> <img class="real_pic" :src="dataURL" /> <slot></slot> </div>
slot裏面是你須要轉化爲圖片的DOM元素。segmentfault
data() { return { dataURL: '' } },
dataURL是最後轉化出來的圖片base64地址,放在img標籤中便可展現。後端
methods: {跨域
toImage() { html2canvas(this.$refs.imageWrapper,{ backgroundColor: null }).then((canvas) => { let dataURL = canvas.toDataURL("image/png"); this.dataURL = dataURL; }); }
}promise
html2canvas的用法很是簡單,不過1.0.0已經將寫法改成了promise,在.then方法裏獲取canvas對象。app
在配置項裏配置backgroundColor: null便可。測試
這是最多見的一個bug,就是這個插件沒法生成跨域了的圖片,也看了官方文檔配置了也百度了都沒有好的辦法,最後是讓後端直接把跨域的圖片轉成base64,就完美解決了這個問題。this
先讓生成的圖片隱藏,等生成好之後再展現。(沒有在手機上測試,效果不必定使人滿意)
1.生成的圖片模糊
2.有跨域圖片致使生成的圖片不完整
這兩個問題網上百度都有不少解決辦法。
若是遇到任何沒法解決的問題請在評論裏留言。