前端dom保存为图片

昨天处理了前端页面保存图片问题用于微信分享,这里涉及的的问题有三个:1.跨域问题。2,效率问题。3,清晰度问题。

前端dom转图片一般是用的html2canvas将dom元素转为图片,然后可以通过canvasimage保存图片为某种格式。

跨域问题,在手机上测试,如果页面里面嵌入跨域的图片,html2canvas是不会将图片画进去的,即使你设置了seCORS: true 也没用,因为微信api返回的头像是一个链接:http://thirdwx.qlogo.cn/mmopen/vi_32/******************************************************。要解决这个问题需要后端配合,用ng做代理服务器,然后将微信的域名换成服务器的域名,问题就解决了。前端工程师可能会对ng转发不太熟悉,如下:

location ^~ /wechat_image/ {

add_header 'Access-Control-Allow-Origin' "$http_origin" always;

add_header 'Access-Control-Allow-Credentials' 'true' always;

add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS' always;

add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified- Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always; proxy_pass http://thirdwx.qlogo.cn/;

}

效率问题

一些复杂的dom生成图片是很慢的,特别是在手机上,如图下面一个简单例子:

 

生成图片并战术出来需要时间将近5秒,在手机端更慢。这基本上是无法接受的。

一种解决方法是启用多线程,提前开启wobwork,而不是点击按钮在生成,通过用户操作的延迟时间,可是webwork不能读取dom,这是行不通的。

另外一种是不使用html2canvas,自己用canvas去构造若干dom元素较少。也就是对自己合适的一个dom保存图片方法,如果dom不复杂这样节约的时间非常多,自己写的比较复杂的是注意计算,否则生成的图片和样式不一致。如下:

基本上不到一秒时间,所以所过dom不太复杂,建议自己写canvas操作。

 清晰度问题

用html2canvas有时候会模糊,当让通过一些设置网上有很多方案,其实位图就是像素点,把canvas的画布配的大一倍就行了。

 

转载于:https://www.cnblogs.com/node-jili/p/10196852.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值