dom-to-image 解决图片模糊问题

先去找到dom-to-image的源码,大概在这个位置

然后直接打开搜索 找到draw方法,我们要对他修改一下

将最后一次回调返回canvas的部分方法修改成这样

function (image) {
                var canvas = newCanvas(domNode);
                let context = canvas.getContext('2d');
                const ratio = window.devicePixelRatio || 1;
                canvas.width *= ratio;
                canvas.height *= ratio;
                context.scale(ratio, ratio);
                context.drawImage(image, 0, 0);
                return canvas;
            }

 我认为截取的图片模糊的原因是因为canvas中原来的像素点因为没有与做与物理像素的统一导致其中原本像素点与设备像素产生偏差,在我们改写方法以后用window对象中的devicePixelRatioAPI获取到了当前设备的物理像素与css样式像素的比例,因为在创建newCanvas的时候以及把dom节点传进去所以此时canvas的高和宽就是传入的dom元素的高宽 那只需要再乘以这个ratio比例就能计算出真实的高宽 最后scale应用比例就完美解决了,只是这个情况下截取的图片的尺寸会比传入的dom节点的尺寸有较大尺寸 所以你还需要对截取的img设置一下样式。

一点拙见,说的不对的请指正,也欢迎提出问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值