用原生js和html5进行网页截图,使用JS实现网页截图并保存

需求

今天接到一个新需求,需要在手机上实现对某张定位实现的自定义图片来生成一个邀请函,然后分享。 这个邀请函是必须是一张图片,由于后端图形拼接太麻烦,于是这个锅就到了前端。而且项目要求比较急,没有时间去研究canvas的图形拼接,就想到了之前做过的网页截图

实现

实现这个方法基于两个库,html2canvas和canvas2img

首先引入这两个库,然后使用html2canvas来对在页面加载完成之后的内容生成canvas

html2canvas($('#model'), {

logging: false,

useCORS: false,

proxy: false,

onrendered: function (canvas) {

// canvas 就是绘制的canvas是对象

// var url = canvas.toDataURL();

// $('#newImg').attr('src', url);

// 使用canvas2image将canvas转化为图片,直接返回一个img节点

var u = Canvas2Image.convertToPNG(canvas, width, height);

}

});

实现截图之后发现两个问题:

html2canvas截取的是实际尺寸的图片,在手机的高分辨率的情况下,分享出去的图片非常的虚

html2canvas无法截取跨域的资源,比如微信头像

解决问题:

1.html2canvas截取的是实际尺寸的图片,在手机的高分辨率的情况下,分享出去的图片非常的虚

时间紧任务急,是时候呼叫万能的bing了(百度坑爹)

感谢这位大神提供的解决方案

注意:在这个解决方案下,外层元素不能使用百分比,会导致不正常缩放使得文字错位的。

2.html2canvas无法截取跨域的资源,比如微信头像

跨域无解,交给后端转base64啦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值