分享中有一个业务功能就是海报分享,把当前页面的数据整理下 然后生成一个图片让用户进行保存 然后发给其他的用户 扫码进入活动中,这个也是推广的一种形式吧
对当前页面进行截图保存转换图片。那么就需要我们今天的主人公。html2canvas。首先进行说明,这个html2canvas也说了 毕竟只是对页面的进行截图 并不是达到原来的看到的效果那样,会有点模糊
The script allows you to take “screenshots” of webpages or parts of it, directly on the users browser. The screenshot is based on the DOM and as such may not be 100% accurate to the real representation as it does not make an actual screenshot, but builds the screenshot based on the information available on the page. 上面的也是原话
- 用法也很简单
npm i html2canvas --save
- 怎么生成海报呢
我这里拿vue项目为例子哈 你这样可以 提前 写好一个页面布局效果,然后使用canvas生成效果,然后吧原来的布局给隐藏就好了
如果你的布局中有图片的话 最话 在图片加载完成之后 才进行渲染哈,再其次就是如果你想分享出去的是图片的话,让用户长按那就得将生成的canvas生成base64然后用一个img标签进行包括
这个也提示下 会啥会用定时器。因为有的图片发现没加载完成。所以为了保证海报中的图片都加载完成 就搞了一个定时起
<div id="poster">
helllo world
<img src="a.png" />
</div>
<img :src="base64Img"/>
import html2canvas from "html2canvas
let image = new Image();
image.src = this.imgUrl;
image.onload = () => {
setTimeout(() => {
html2canvas(document.querySelector('#poster'), {
useCORS: true,
scrollY: 0,
scrollX: 0,
}).then(canvas => {
let base64 = canvas.toDataURL()
this.show = false
this.base64Img = base64
uni.hideLoading()
})
}, 2000)
}
最后就可以了 大功告成。
关注我。持续更新 前端知识。
|