html2canvas截图字体重叠,【你并不总是需要html2canvas】一,截图适配

本文介绍了不依赖html2canvas,而是使用canvas原生API来实现H5截图的需求。作者分析了html2canvas的问题,如体积大、黑盒和不便优化,并决定自行绘制。文章探讨了截图适配问题,包括布局、图片分辨率和字体大小的适配,提出了两种解决方案。接着,详细讲述了图片预加载、高清图、位置适配、圆形头像绘制和文字绘制的实践步骤,帮助开发者掌握自定义截图的方法。
摘要由CSDN通过智能技术生成

1 序章

《你并不总是需要html2canvas》将会是系列文章,逐步讲解如何使用canvas原生api来实现我们的截图需求,文章将围绕不使用html2canvas需要解决的一系列问题来展开,期望能给大家带来如下收获:

熟悉canvas原生api(但不像接口文档);

了解到html2canvas解决了哪些问题,而我们自己可以怎么解决;

分析需求,按需使用或制造“轮子”的能力;

2 背景

相信H5截图分享的功能大家都做过,而且会反复做。凡是反复做的事情,我都会想:“下一次怎么做得更好,或者更快”,毕竟我是一个“懒惰”而又“没有耐心”的人。懒惰驱动我提高生产力,没有耐心驱使我在同样一件事情上不断挖掘新的东西,否则容易在重复中失去耐心。

说到截图,大名鼎鼎的html2canvas - Screenshots with javascript大家肯定耳熟能详,强大,易用。感谢开源社区的贡献,确实帮我们节省了很多力气。

// 使用示例

html2canvas(document.querySelector("#capture")).then(canvas => {

document.body.appendChild(canvas)

});

复制代码

f2e92c202dc19dcb57667fe573711a59.png

但在使用过程中我也遇到了一些问题:

体积大(gzip 40k,未gzip 161k) - 通用的开源模块大而全也是常态;

黑盒 - 和预期不符只能搜索求助,比较难定位;

不好个性化处理 - 例如显示和截图不一致时,需要多维护一套截图用的DOM;

不好优化绘制耗时 - 例如在重复绘图时,可以把一些固定不变的内容绘制到一个缓存canvas上面,后续把这个canvas绘制到目标canvas即可,这个缓存canvas的内容不用反复绘制;

因此,简单分析截图分享的需求(如上图所示)后,我决定试试自己直接绘制,于是就开始了我的踩坑之旅。如果你也想为了一点点的体积优化而不使用html2canvas,那请做好心理准备解决下列问题:

适配(1/2/3倍图...)

图片绘制(头像圆形裁剪...)

文字绘制(定位,局部高亮,自动换行,自动省略...)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值